linux shell控制語句

來源:互聯網
上載者:User

控制語句

常用的列出以下三種。小寫字串表示控制命令,大寫的表示其他意義。
1. if TEST then COMMANDS elif TEST then COMMANDS fi
2. for VAR in LIST do COMMANDS done
3. while TEST do COMMANDS done

COMMANDS,指命令的集合;VAR,指的是變數;TEST是測試語句,有幾種形式:

View Code

 1 [ -a FILE ]           如果 FILE 存在則為真。  
2 [ -b FILE ] 如果 FILE 存在且是一個塊特殊檔案則為真。
3 [ -c FILE ] 如果 FILE 存在且是一個字特殊檔案則為真。
4 [ -d FILE ] 如果 FILE 存在且是一個目錄則為真。
5 [ -e FILE ] 如果 FILE 存在則為真。
6 [ -f FILE ] 如果 FILE 存在且是一個普通檔案則為真。
7 [ -g FILE ] 如果 FILE 存在且已經設定了SGID則為真。
8 [ -h FILE ] 如果 FILE 存在且是一個符號串連則為真。
9 [ -k FILE ] 如果 FILE 存在且已經設定了粘制位則為真。
10 [ -p FILE ] 如果 FILE 存在且是一個名字管道(F如果O)則為真。
11 [ -r FILE ] 如果 FILE 存在且是可讀的則為真。
12 [ -s FILE ] 如果 FILE 存在且大小不為0則為真。
13 [ -t FD ] 如果 檔案描述符 FD 開啟且指向一個終端則為真。
14 [ -u FILE ] 如果 FILE 存在且設定了SUID (set user ID)則為真。
15 [ -w FILE ] 如果 FILE 如果 FILE 存在且是可寫的則為真。
16 [ -x FILE ] 如果 FILE 存在且是可執行檔則為真。
17 [ -O FILE ] 如果 FILE 存在且屬有效使用者ID則為真。
18 [ -G FILE ] 如果 FILE 存在且屬有效使用者組則為真。
19 [ -L FILE ] 如果 FILE 存在且是一個符號串連則為真。
20 [ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read則為真。
21 [ -S FILE ] 如果 FILE 存在且是一個通訊端則為真。
22 [ FILE1 -nt FILE2 ] 如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1FILE2 does not則為真。 exists and
23 [ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在則為真。
24 [ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的裝置和節點號則為真。
25 [ -o OPTIONNAME ] 如果 shell選項 “OPTIONNAME” 開啟則為真。
26 [ -z STRING ] STRING的長度為零則為真。
27 [ -n STRING ] or [ STRING ] STRING的長度為非零 non-zero則為真。
28 [ STRING1 == STRING2 ] 如果2個字串相同。 = may be used instead of == for strict POSIX compliance則為真。
29 [ STRING1 != STRING2 ] 如果字串不相等則為真。
30 [ STRING1 < STRING2 ] 如果 STRING1 sorts before STRING2 lexicographically in the current locale則為真。
31 [ STRING1 > STRING2 ] 如果 STRING1 sorts after STRING2 lexicographically in the current locale則為真。
32 [ ARG1 OP ARG2 ] OP is one of -eq, -ne, -lt, -le, -gt or -ge.
33
34 [ ! EXPR ] 如果 EXPR 是false則為真。
35 [ ( EXPR ) ] 返回 EXPR的值。這樣可以用來忽略正常的操作符優先順序。
36 [ EXPR1 -a EXPR2 ] 如果 EXPR1 and EXPR2 全真則為真。
37 [ EXPR1 -o EXPR2 ] 如果 EXPR1 或者 EXPR2 為真則為真。
38
39 TEST也可以是有返回的命令。例如
40 if "hello world" | grep hello > /dev/null ; then echo "hello is here" ; fi

4. if舉例:

 if [ $count -lt $times ] then     count=`expr $count + 1`     echo $count fi

5. for舉例:

for loop in `ls` do     echo $loop done

6. while舉例:

 while [ $count -lt $times ] do     count=`expr $count + 1`     echo $count done

注意事項
1. 有些空格要小心,例如 if [ "$str" = "abc" ] 中,[ 和 ] 前後的空格不能去掉。
2. 變數的運算式,shell預設是按字串進行的。所以:
   a = 1
   a = $a+1
   那麼a就變成了字串"1+1",而不是2。要是他按數學運行,要使用expr命令。
   a = 1
   a = `expr $a + 1`
   注意,此處+好前後的空格也不能去掉,否則"$a+"會被看出一個整體,所有解析會出錯。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.