shell 指令碼中 , , 和shift

2021-06-21 01:44:10 字數 1143 閱讀 9387

$$,$#,$?的區別:

$0 這個程式的執行名字

$n 這個程式的第n個引數值,n=1..9

$* 這個程式的所有引數,此選項引數可超過9個。

$# 這個程式的引數個數

$$ 這個程式的pid(指令碼執行的當前程序id號)

$! 執行上乙個背景指令的pid(後台執行的最後乙個程序的程序id號)

$? 執行上乙個指令的返回值 (顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤)

$- 顯示shell使用的當前選項,與set命令功能相同

$@ 跟$*類似,但是可以當作陣列用

shift關鍵字:

位置引數可以用shift命令左移。比如shift 3表示原來的$4現在變成$1,原來的$5現在變成$2等等,原來的$1$2$3丟棄,$0不移動。不帶引數的shift命令相當於shift 1

非常有用的 unix 命令:shift。我們知道,對於位置變數或命令列引數,其個數必須是確定的,或者當 shell 程式不知道其個數時,可以把所有引數一起賦值給變數$*。若使用者要求 shell 在不知道位置變數個數的情況下,還能逐個的把引數一一處理,也就是在 $1 後為 $2,在 $2 後面為 $3 等。在 shift 命令執行前變數 $1 的值在 shift 命令執行後就不可用了。

示例如下:

#測試 shift 命令(x_shift.sh)

until [ $# -eq 0 ]

doecho "第乙個引數為: $1 引數個數為: $#"

shift

done

執行以上程式x_shift.sh:

$./x_shift.sh 1 2 3 4

結果顯示如下:

第乙個引數為: 1 引數個數為: 4

第乙個引數為: 2 引數個數為: 3

第乙個引數為: 3 引數個數為: 2

第乙個引數為: 4 引數個數為: 1

shell指令碼 shift引數左移

引數左移什麼意思呢?這個引數指的是在執行指令碼時,跟在指令碼名後面的引數,前面已經講過,可以使用 來獲取引數的個數,使用 來獲取所有的引數,而引數左移的含義是這樣的 有個指標指向引數列表第乙個引數,左移的意思就是每讀乙個引數,指標就指向第二個引數,就好像引數向左移動了,於是乎,這樣就可以讀取每個引數...

shell指令碼中shift的用法說明

shift命令用於對引數的移動 左移 通常用於在不知道傳入引數個數的情況下依次遍歷每個引數然後進行相應處理 常見於linux中各種程式的啟動指令碼 示例1 依次讀取輸入的引數並列印引數個數 run.sh bin bash while 0 do echo 第乙個引數為 1,引數個數為 shift do...

Shell程式設計中Shift的用法

位置引數可以用shift命令左移。比如shift 3表示原來的 4現在變成 1,原來的 5現在變成 2等等,原來的 1 2 3丟棄,0不移動。不帶引數的shift命令相當於shift 1。非常有用的 unix 命令 shift。我們知道,對於位置變數或命令列引數,其個數必須是確定的,或者當 shel...