shell指令碼學習

來源:互聯網
上載者:User

標籤:

用vim或vi等編寫Shell指令碼的格式是固定的,如下:

#!/bin/sh#commentscode
#!

告訴系統其後路徑所指定的程式即是解釋此指令檔的Shell程式。如果首行沒有這句話,在執行指令檔的時候,將會出現錯誤

#

注釋行直到此行的結束。

儲存檔案為filename.sh,之後添加可執行許可權

chmod +x filename.sh
列印Hello,world的樣本:
#!/bin/sh#第一個shell指令碼#聲明一個變數a,並賦值a="Hello,world"#將變數a的值顯示的控制台上echo $a
=

變數賦值paramName=paramValue

echo

在控制台上回顯資料,相當於java中的System.out.println()

$

引用某個變數,$a就是引用變數a,也可以使用${a},可嵌套在""中使用

${}

引用某個變數,${a}就是引用變數a的值,這是為了避免混淆.

#!/bin/sh#說明$與${}的區別a="Hello,world"#會尋找變數as,結果顯示Test1,echo "Test1,$as"#會尋找變數a,結果顯示Test2,Hello,worldsecho "Test2,${a}s"
$#

表示命令列參數的個數

$0,$1,...$9,${10},...

$0對應指令碼名稱,$1對應第一個參數,沒有參數時什麼都不顯示

#!/bin/sh#輸出參數個數echo "參數個數:"$##輸出指令碼名稱echo "指令碼名稱:"$0#輸出第一個參數echo "第一個參數:"$1

假如此指令碼儲存為檔案hello.sh

[email protected]:~/shell_ex$ ./hello.sh 參數個數:0指令碼名稱:./hello.sh第一個參數:[email protected]:~/shell_ex$ ./hello.sh 12參數個數:1指令碼名稱:./hello.sh第一個參數:12
$*

列出所有的參數(沒有$0)

if [];then
    ...
elif [];then
    ...
else
    ...
fi
#!/bin/shif [ $# -gt 3 ];then    echo "參數個數大於3"elif [ $# -lt 2 ];then    echo "參數個數小於2"else    echo "參數個數為3"fi


常用的測試條件有:

[ -f "$file" ] 判斷$file是否是一個檔案

[ $a -lt 3 ] 判斷$a的值是否小於3,同樣-gt和-le分別表示大於或小於等於

[ -x "$file" ] 判斷$file是否存在且有可執行許可權,同樣-r測試檔案可讀性

[ -n "$a" ] 判斷變數$a是否有值,測試空串用-z

[ "$a" = "$b" ] 判斷$a和$b的取值是否相等

[ cond1 -a cond2 ] 判斷cond1和cond2是否同時成立,-o表示cond1和cond2有一成立

要注意條件測試部分中的空格。在方括弧的兩側都有空格,在-f、-lt、=等符號兩側同樣也有空格。如果沒有這些空格,Shell解釋指令碼的時候就會出錯




shell指令碼學習

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.