三 shell指令碼之if語句控制

2021-09-23 23:54:11 字數 1890 閱讀 8701

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...