天天看點

Shell腳本

#######################

強引用、弱引用

'' ""

[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