任何程式語言都離不開流程控制語句,其實程式設計基本上就是掌握了流程控制語句,然後加上函式(或者是方法)以及變數基本就差不多了,語法的東西很少,主要還是處理邏輯。所以,邏輯思維很重要。
對於計算機來說,它只知道有或者沒有,是正或者是負,有電或者沒電,其實就是1和0的事兒。因此,if語句很重要,但又很簡單,不過shell又很多不好的地方,用了之後的同事都說沒有python和perl好用。
來看看shell中if語句的格式吧。
if else
if格式有點像下面這種
if condition
then
command1
command2
...commandn
fi
例如
#!/bin/bash
a=3#eq 是表示相等的意思
#這裡一定要注意括號和變數要用空格,空號和if之間也要有空格
if [ $a eq 3 ];then
echo "a equal 3"
fi
來看看第二種
這種是含有else的,就是可以有多個分支。
if condition
then
command1
command2
...commandn
else
command
fi
我們還是用上面那個例子看看
#!/bin/bash
a=3#eq 是表示相等的意思
#這裡一定要注意括號和變數要用空格,空號和if之間也要有空格
if [ $a eq 3 ];then
echo "a equal 3"
else
echo "a not equal 3"
fi
上面這裡也可以寫成這樣
#!/bin/bash
a=3#eq 是表示相等的意思
#這裡一定要注意括號和變數要用空格,空號和if之間也要有空格
#如果我們把then另起一行的話,if那一行就不需要用分號結尾了
if [ $a eq 3 ]
then
echo "a equal 3"
else
echo "a not equal 3"
fi
就是這麼簡單。
這裡可以判斷兩個分支了,那我們來看看能不能使用判斷多個分支的。
if condition1
then
command1
elif condition2
then
command2
else
commandn
fi
這裡的下面這個條件可以無限迴圈下去,你想寫多少個分支就寫多少個分支
elif condition2
then
來看乙個例子,判斷兩個變數是否相等:
#!/bin/bash
a=3b=2
#這裡一定要注意括號和變數要用空格,空號和if之間也要有空格
#如果我們把then另起一行的話,if那一行就不需要用分號結尾了
if [ $a == $b ]
then
echo "a 等於 b"
elif [ $a -gt $b ]
then
echo "a 大於 b"
elif [ $a -lt $b ]
then
echo "a 小於 b"
else
echo "沒有符合的條件"
fi
其實雖然說有三種,但是只要我們掌握第三種就可以了。
你要是細心一點,就會發現第三種已經包含第一種和第二種了。
另外,還有一些if的複雜使用(其實這個已經不算是語法問題了),比方說if多個條件判斷,if語句巢狀(if語句裡面又要判斷)等等這些,等我們講完所有的shell語句之後來乙個大例子把這些都包含進去。
for語句就沒有那麼多中情況了,只有一種語法:
for var in item1 item2 ... itemn
do command1
command2
...commandn
done
來看幾個例子
列印輸出1到5
for loop in 1 2 3 4 5
do echo "the value is: $loop"
done
輸出
the value is: 1
the value is: 2
the value is: 3
the value is: 4
the value is: 5
計算1到100的和
#!/bin/bash
sum=0
for i in
do let sum=sum+$i
done
echo $sum
輸出 5050
也可以寫成這樣
#!/bin/bash
sum=0
for i in `seq 1 100`
do let sum=sum+$i
done
echo $sum
while語句和for語句差不多的。
滿足condition的時候 會做command的操作。
while condition
do command
done
來用while實現列印1到5,實現了這個你就可以用迴圈列印任意範圍的數字了。
#!/bin/bash
int=1
while(( $int<=5 ))
do echo $int
let "int++"
done
執行指令碼,輸出:
123
45
說一下這的let命令,它用於執行乙個或多個表示式,變數計算中不需要加上 $ 來表示變數。
let 命令是 bash 中用於計算的工具,用於執行乙個或多個表示式,變數計算中不需要加上 $ 來表示變數。如果表示式中包含了空格或其他特殊字元,則必須引起來。
格式如下:
let arg [arg …]
例項:自加操作:let no++
自減操作:let no–
簡寫形式 let no+=10,let no-=20,分別等同於 let no=no+10,let no=no-20。
以下例項計算 a 和 b 兩個表示式,並輸出結果:
#!/bin/bash
let a=5+4
let b=9-3
echo $a $b
輸出結果為:
9 6
無限迴圈就是這個程式在這個迴圈中一直執行,不會退出。
while :
do command
done
或者是
while :
do command
done
或者是for語句的
for (( ; ; ))
程式在執行的時候,有時候需要還沒有到達迴圈末尾的時候就退出迴圈,比方我們在乙個檔案當中查詢pason這個詞,如果找到了,就退出了,找不到,就一直找下去,知道檔案結尾。
假如我們只需要找到乙個pason就退出了,這個時候我們就可以用break,這個可以退出整個迴圈。
假如我們要找到在乙個資料夾中查詢,每個檔案中都要求找到乙個pason即可。
那這個就是迴圈套迴圈了,如果我們在檔案a中找到了pason,那檔案a中就不需要找了,直接進入下次迴圈,進入檔案b中去,這個時候可以用continue。
continue退出本次迴圈,進入下乙個迴圈。
break 退出當前迴圈
Shell流程控制語句
在linux shell程式設計中,if for while case等條件流程控制語句用的非常多,把這些學好,對提公升指令碼的功力有非常大的幫助。下面將逐個來講解具體的用法 if 表示式 if variable in array 語句1else 語句2fi 案例一,測試數字大小 bin sh nu...
Shell基礎 流程控制語句
0 表示當前指令碼檔案的名稱 獲取當前指令碼有多少個引數 對應所有引數的值 n 對應第n個引數的值 表示當前指令碼執行結果 0表示成功,非0表示失敗 有兩種方式 a.test 命令 b.w test.sh 引數 檔名 2.1 檔案測試 2.2 邏輯測試 與 或 非 2.3 整數值比較測試 2.4 字...
shell 之 流程控制語句if
if 條件 then commands fi bin bash ifls shell then echo there is a dir named shell fi執行結果 注 根據我們命令退出的碼來進行判斷 是否為 0 如果是0,那麼就會執行then後面的命令 if 條件 then command...