shell學習筆記 命令列引數的處理

2021-05-24 12:56:54 字數 1430 閱讀 9719

1、shift  移開第乙個引數

2、$#    提供傳遞到shell指令碼或函式的引數總數。

while [$# != 0]                以shift逐漸減少$#,迴圈將會終止

docase $1 in 

esac

shift

done

3、$*, $@

一次表示所有的命令列引數。這兩個引數可用來把命令列引數傳遞給指令碼或者函式所執行的程式。

「$*」將所有的命令列引數視為單個字串,等同於「$1 $2 ...」.

$ifs的第乙個字元用來做為分隔字元,以分隔不同的值來建立字串

例如:ifs="123"

printf "the arguments were %s/n" "$*"

$./aa   a b c

輸出:the arguments were a1b1c

$@將所有的命令列引數視為單獨的個體也就是單獨的字串。等同於「$1」 "$2" ...

printf "the arguments were %s/n" "$@"

$./aa   a b c

輸出:the arguments were a

the arguments were b

the arguments were c

4、posix內建shell變數

#    目前程序的引數個數。

@    傳遞給當前程序的命令列引數,至於雙引號內,會展開為個別的引數。

*    當前程序命令列引數。置於雙引號內,則展開為一單獨引數。

-(連字型大小)    在引用時給予shell的選項。

?    前一命令的退出狀態。    echo $?    輸出退出碼。

$    shell程序的程序編號(process id)。

0    shell程式的名稱。

!    最近乙個後台命令的程序編號,以此方式儲存程序編號,可通過wait命令以供稍後使用。

env     一旦使用,則僅用於互動式shell中,$env的值是可展開的擦書。結果應為要讀取和在啟動時要執行的乙個檔案的完整路徑名稱。這是乙個xsi必需的變數。

home    根(登入)目錄

ifs    內部字段分隔器;例如作為單詞分隔器的字元列表。一般設為空格、製表符(tab),以及換行符(newline)。

lang    當前locale的預設名稱;其他的lc_*變數會覆蓋其值。

path    命令的查詢路徑。

ppid    父程序的程序編號。

4、$? 最後一次退出的狀態碼

0    命令成功退出

>0    重定向或單詞展開期間失敗

1-125    命令不成功的退出

126        命令找到了,單檔案無法執行

127        命令找不到

128        命令收到訊號而死亡

Shell的命令列引數

當你執行shell指令碼時,如 myshell.sh a b c d e f 其中,後部分的a b c d e f 是傳入shell指令碼myshell.sh的引數 在shell指令碼裡,我們可以通過這樣獲得傳入的引數 echo first arg is 1 echo tenth arg is 其中...

SHELL 命令列引數簡介

我們對於普通指令碼語言諸如perl python等,寫乙個指令碼程式,包裝命令列引數時,一般都是用getopt之類的 c語言也類似。那麼,對於乙個shell指令碼,它本身的命令引數是什麼樣呢?首先,shell指令碼程式設計和python等指令碼程式設計一樣可以使用引數 其次,shell引數分為位置引...

SHELL 命令列引數簡介

我們對於普通指令碼語言諸如perl python等,寫乙個指令碼程式,包裝命令列引數時,一般都是用getopt之類的 c語言也類似。那麼,對於乙個shell指令碼,它本身的命令引數是什麼樣呢?首先,shell指令碼程式設計和python等指令碼程式設計一樣可以使用引數 其次,shell引數分為位置引...