if 判斷
在shell中if條件判斷語句和我們的c、python等語言不同,shell的if語句條件必須用[ ]括起來,另外[ ]裡外都需要用空格與周圍隔開(例如[ a == b ]),否則會報錯
if基本語法
if [ 表示式 ];then ;fi
或if command;then ;fi
其中[ 表示式 ] 等同於test命令,man test
條件測試型別
1.整數測試
-eq 測試兩個整數是否相等
-ne 測試兩個整數是否不等
-gt 測試乙個數是否大於另乙個數
-lt 測試乙個數是否小於另乙個數
-ge 大於或等於
-le 小於或等於
2.字串測試(字串兩邊要有空格)
== 等於
!= 不等
> 大於
< 小於
-z string 測試指定字元是否為空,空著真,非空為假
-n string 測試指定字串是否為不空,空為假 非空為真
3.檔案測試
-e file 測試檔案是否存在
-f file 測試檔案是否為普通檔案
-d file 測試指定路徑是否為目錄
-r file 測試檔案對當前使用者是否可讀
-w file 測試檔案對當前使用者是否可寫
-x file 測試檔案對當前使用者是都可執行
4.組合測試
-a: and
-o: or
!: 非
5.&&運算子
command1 && command2
&&左邊的命令(命令1)返回真(即返回0,成功被執行)後,&&右邊的命令(命令2)才能夠被執行;命令之間使用 && 連線,實現邏輯與的功能。
如:
test -f /var/log/messages && echo ok
6.||運算子
command1 || command2
||則與&&相反。如果||左邊的命令未執行成功,那麼||右邊的命令就會執行
如 test -f 123 || echo error
if練習:
1.判斷當前使用者是否是root,不是的話退出,如果是的話顯示一下root的登入shell
id=`id -u`
if [ $id -eq 0 ]
then
grep "^root" /etc/passwd|cut -d: -f7
else
exit
fi
2.命令列輸入任意三個整數,判斷最大的數
max=$1
if [ $2 -ge $1 ]; then
max=$2
fiif [ $3 -ge $max ]; then
max=$3
fiecho "the max number is $max."
3.用shell指令碼,判斷/bin/nohup是不是可執行檔案,如果是將其拷貝到/tmpdir目錄下,判斷如果/tmpdir目錄不存在,自動建立。
if [ -x /bin/nohup ]
then
if [ ! -d /tmpdir ]
then
mkdir /tmpdir
ficp /bin/nohup /tmpdir
fi
shell 指令碼之if for while語句
1 if語句 root ubuntu mnt shared shellbox shellif cat shellif.sh bin bash 推斷字串 if 1 hello then echo 1 1 fi 推斷數字,if 方式僅僅能在bash下用,在sh下不行 if 1 20 then echo ...
shell指令碼之expect語句
在編寫shell指令碼時,我們可能會遇到一些互動式的情況,如passwd ssh等等指令碼時,常常需要手動進行互動。這樣,原本為了實現自動部署的指令碼顯得有些不大方便,這時你就會用上expect命令了。expect命令可以幫你把互動式命令變成非互動式。expect 有期待 期望的中文意思。正如它的中...
shell指令碼之流程控制語句
一 分支控制語句 1 if fi條件 if condition then action fi2 if else fi條件 if condition then action else action fi3 if else if else fi條件 if condition then action el...