#######################
强引用、弱引用
'' ""
[root@localhost desktop]# echo "i have a $fruit"
i have a
[root@localhost desktop]# echo 'i have a $fruit'
i have a $fruit
[root@localhost desktop]# echo make \$\$ fast\!
make $$ fast!
[root@localhost desktop]# echo make $$ fast!
make 4119 fast!
[root@localhost desktop]# echo #i have a banana#
[root@localhost desktop]# echo \#i have a banana
#i have a banana
[root@localhost desktop]# echo '#i have a banana'
[root@localhost desktop]# echo `pwd`
/root/desktop
[root@localhost desktop]# echo ' "goodafternoon" '
"goodafternoon"
变量:
[root@localhost desktop]# i=9
[root@localhost desktop]# j=0
[root@localhost desktop]# echo $i $j
9 0
父shell,子shell
[root@localhost desktop]# bash
[root@localhost desktop]# exit
exit
算术运算符
<value>++ 赋值后增1 <value>-- 赋值后减1
- 减法 + 加法
** 幂运算 * 乘法
/ 除法 % 余数
+= 加等 -= 减等
计算命令:$[],expr,let,(())
循环:
for do done
while do done
例子:1+2+...+100,数据库备份
vim 100.sh
#!/bin/bash
for i in {1..100}
do
((j+=i));
echo $j
done
chmod +x 100.sh
./100.sh
显示结果:
1
3
6
10
...
5050
vim mysql.sh
#!/bin/bash
for name in ` mysql -uroot -predhat -e "show databases;" -ne | grep - e "^\*|^u|schema$" -v `
do
mysqldump -uroot -predhat $name > /mnt/${name}.dump
echo "$name is ok."
done
test条件判断:
语法:test expression 或[expression]
[root@localhost desktop]#[ -n westos ];echo $?
[root@localhost desktop]#[ -z westos ];echo $?
字符串比较运算符:==、!=
[root@localhost desktop]#[ abc=abc ];echo $?
[root@localhost desktop]#[ abc=abc ];echo $?
[root@localhost desktop]#[ abc!=abc ];echo $?
数字比较运算符:
-eq 判断是否相等,相等返回0;
-ne 判断是否不等,别等返回0;
-lt 判断是否小于,小于返回0 ;
-le 判断是否小于等于,若小于等于为0;
-gt 判断是否大于,大于返回0;
-ge 判断是否大于等于,若大于等于返回0。
[root@localhost desktop]#[ 1 -eq 1 ];echo $?
[root@localhost desktop]#[ 1 -ne 1 ];echo $?
[root@localhost desktop]#[ 1 -gt 2 ];echo $?
文件状态运算符:
语法: test -{-b|-c|-e|-f|-d|-l} filename|direcrtory
-b:判断是否为块设备
-c:判断是否为字符文件
-e:判断文件是否存在
-f:判断是否为普通文件
-d:判断是否是目录
-l:判断是否为链接文件(软连接)
二进制文件运算符:-ef -nf -ot
逻辑运算符:-o -a ! && ||
{ if;then fi }
{if ;then else fi}
{if ;then else if; then else if; then ... else fi}
case "$1" in
);;
esac
简易一天倒计时:
#!/bin/bash
for ((hour=23;hour>=0;hour--))
do
for ((min=59;min>0;min--))
for (( sec=59;sec>=0;sec--))
echo -ne "after ${hour}:${min}:${sec} is end."
echo -ne "\r\r"
sleep 1
done
for num in {1..30}
ping -c1 -w1 192.168.122.$num &>/dev/null
while [ "$?" -eq "0" ]
echo 192.168.122.$num is up
break
while [ "$?" -ne "0" ]
echo 192.168.122.$num is down
expect
env
别名alias