#######################
強引用、弱引用
'' ""
[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