shell編程入門(1)

來源:互聯網
上載者:User

shell程式是一個包含UNIX命令的普通檔案,這個檔案的許可權應該可讀和可執行。和普通可執行程式一樣,執行shell程式的時候要麼指定完全路徑名,或者將其放在PATH環境變數指定的路徑列表中。

和普通的程式一樣,shell程式包含三種控制結構:順序結構、判斷和迴圈結構。

shell程式的第一行應包括#!/bin/sh表示該檔案是一個可執行程式,需要被shell解釋

1. 給shell程式傳遞參數

給shell程式傳遞參數的方式之一是使用環境變數,注意環境變數和shell變數的區別。傳遞參數的方式:

#!/bin/shecho “you are running in xxx.sh”echo “value of color is $color”# export color=black# ./xxx.shyou are running in xxx.shvalue of color is black

給shell傳遞參數的另一種方式是使用命令列參數:

shell程式中可以用$加數位變數來引用命令列參數:

¡$0 表示命令本身
$1 表示第1個參數
$(12) 表示第12個參數
$# 表示命令列參數的數量
$* 則表示所有的命令列參數

#!/bin/shecho “There are $# arguments”echo “Thay are $*”echo “The first argument is $1”

其中$#和$*都不包含$0。

可以傳遞$*給接收多個參數的命令

#!/bin/shecho “$0 will install $# files to bin directory”chmod a+x $*mv $* $HOME/binecho “Install OK!”

2. shift命令

命令格式:shift [n]

功能:將$*中的參數序列向左移動n個位置,並且將$#的值減少n。shift命令不會影響$0,該命令一旦完成,被移出的參數就會丟失,如果需要,應該在shift移出之前儲存這個參數。

#!/bin/shorig_args=$*echo “There are $# arguments”echo “Thay are $*”shift 2echo “There are $# arguments”echo “Thay are $*”

3. read命令
命令格式:read 變數1 變數2 ...功能:從標準輸入讀入值,並賦給指定變數。輸入的值之間用空白字元分隔開,分別賦給對應的變數,如果變數屬多於值的數量,多餘的變數設定為空白,如果值的數量多於變數,多餘的值將一併賦給最後一個變數。
read命令一次讀入整行,不能用一個read命令讀入一行的一部分,而用另外一個read命令讀入該行的剩餘部分。

# read var1 var2abc def ghi jkl# echo $var1abc# echo $var2def ghi jkl

4. 執行shell程式的方法
無論shell程式是否為可執行檔,使用sh都可以在當前shell的子shell中運行這個shell程式,使用./程式名 也可以達到同樣的效果。
如果想在當前shell中執行shell程式,可以使用source 程式名 或 . 程式名(注意空格)來執行。

5. 命令的傳回值
可以使用$?來擷取上一條命令的傳回值,一般來說,0表示上一條命令正常結束,1表示上一條命令出現錯誤而終止。

$ true     # 永遠返回 0 的命令$ echo $?0$ ls$ echo $?0$ cpcp: missing file argument Try `cp --help' for more information.$ echo $?1

6. test命令

test命令測試指定條件,並將結果通過傳回值呈現。

文法格式:test 運算式    或簡寫為   [運算式]

test命令可以用作3種對象上:數字測試、字串測試、檔案測試

對於數字測試,有:

-le 小於等於 -gt 大於

-ge 大於等於 -eq 等於

-ne 不等於

$ var=12$ [ $var -lt 24 ] # 12小於24?$ echo $?0

對於字串測試,有:

=   !=  -z(字串長度為0)  -n(字串長度非0)

[ $var = “abc” ] # 變數var等於abc?[ $var != “abc” ][ -z “$var” ]  #變數var是否長度為0[ -n “234” ]   #變數var長度是否非0

可以對檔案的狀態進行測試

[ -f /path/filename ] 測試 /path/filename 是否是普通檔案[ -d /path/filename ] 測試 /path/filename 是否是目錄[ -w /path/filename ] 測試 /path/filename 是否可寫

可以使用 ! -a –o (非、與、或)參數進行組合測試

7. exit命令

文法格式:exit 數字

結束當前shell程式,並指定傳回值

8. 在shell進行算數運算

使用 $((算術運算式)) 的方式可以進行算術運算

$ x=100$ echo “$(($x + 23))”123
相關文章

聯繫我們

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