天天看點

shell程式設計04【流程控制語句】

流程控制語句

一、if語句

1.文法

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi      

寫成一行(适用于終端指令提示符):

if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi      

2.舉例

#!/bin/bash
a=10
b=20
if [ $a -eq $b  ]
then
   echo "a 等于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo " a 大于 b"
fi      

輸出

[root@hadoop-node01 ~]# . s8.sh 
a 小于 b      

注意

[ condition ] (注意condition前後要有空格)

二、case語句

 Shell case語句為多選擇語句。可以用case語句比對一個值與一個模式,如果比對成功,執行相比對的指令。

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac      

舉例

#!/bin/bash
case $1 in
start)
    echo "開始執行了..."
    ;;
stop)
    echo "執行完成...."
    ;;
*)
     echo "其他操作"

esac      

輸出:

[root@hadoop-node01 ~]# vim s9.sh 
[root@hadoop-node01 ~]# . s9.sh 
其他操作
[root@hadoop-node01 ~]# . s9.sh start
開始執行了...
[root@hadoop-node01 ~]# . s9.sh stop
執行完成....
      

 取值後面必須為單詞in,每一模式必須以右括号結束。取值可以為變量或常數。比對發現取值符合某一模式後,其間所有指令開始執行直至 ;;

三、循環語句

1.for循環

for循環一般格式為

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done      

寫成一行

for var in item1 item2 ... itemN; do command1; command2… done;      
#!/bin/bash
for i in 1,2,3,4
do
   echo $i
done

echo "------1------"
for i in {1..5}
do
   echo $i
done

echo "------2----"
for a in {1..5} ; do echo $a; done;

echo "-----3------"

for((i=0;i<10;i++))
do
  echo $i
done
echo "-----4-----"

for((i=0;i<5;i++)); do echo $i ;done;      
[root@hadoop-node01 ~]# . s10.sh 
1,2,3,4
------1------
1
2
3
4
5
------2----
1
2
3
4
5
-----3------
0
1
2
3
4
5
6
7
8
9
-----4-----
0
1
2
3
4      

break和continue關鍵字

#!/bin/bash
for i in {1..10}
do
   if [ $i -eq 5 ]
   then
        break;
   fi
   echo $i
done
echo "-------------"
for i in {1..10}
do
     if [ $i -eq 5 ]
     then
        continue
     fi
     echo $i
done      
[root@hadoop-node01 ~]# . s11.sh 
1
2
3
4
-------------
1
2
3
4
6
7
8
9
10      

2.where循環

 while循環用于不斷執行一系列指令,也用于從輸入檔案中讀取資料;指令通常為測試條件。

while condition
do
    command
done      
#!/bin/bash
i=1
while(( $i<=5))
do
   echo $i
   let i++
done      

 使用中使用了 Bash let 指令,它用于執行一個或多個表達式,變量計算中不需要加上 $ 來表示變量

無限循環

while :
do
    command
done      

三、read語句

文法

read -p(提示語句)-n(字元個數) -t(等待時間 機關秒)       

案例

[root@hadoop-node01 ~]# read -p 請輸入密碼: -n 10 -t 10 password
請輸入密碼:123456
[root@hadoop-node01 ~]# echo $password
123456