我正在查看一個shell腳本。這兩條線是做什麼的?
lib=$1
shift
非常感謝。
我正在查看一個shell腳本。這兩條線是做什麼的?
lib=$1
shift
非常感謝。
shift
遍歷shell的參數列表。有關shift
,請參閱man page。
因此,這兩行後,lib=$2
。
更清楚地示例:
echo 「arg1= $1 arg2=$2」
shift
echo 「arg1= $1 arg2=$2」
shift
echo 「arg1= $1 arg2=$2」
shift
輸出:
arg1= 1 arg2=2
arg1= 2 arg2=
arg1= arg2=
實施例2:
echo 「arg1= $1 arg2=$2 arg3=$3 arg4=$4」
shift
echo 「arg1= $1 arg2=$2 arg3=$3 arg4=$4」
shift
echo 「arg1= $1 arg2=$2 arg3=$3 arg4=$4」
shift
echo 「arg1= $1 arg2=$2 arg3=$3 arg4=$4」
shift
echo 「arg1= $1 arg2=$2 arg3=$3 arg4=$4」
shift
輸出:
arg1=1 arg2=2 arg3=3 arg4=4
arg1=2 arg2=3 arg3=4 arg4=
arg1=3 arg2=4 arg3= arg4=
arg1=4 arg2= arg3= arg4=
arg1= arg2= arg3= arg4=
感謝您的回答。我創建了一個名爲shell.sh的文件並將您的命令行復制到文件中。然後我測試了兩個命令: 'sh shell.sh 1 2',它向我顯示了你的輸出。我建議用命令'sh shell.sh 1 2 3 4'來做另一個測試。它解釋了什麼轉變很好。 – Amy 2014-09-23 22:50:21
更新了第二個例子。如果這是有益的,考慮標記爲答案以幫助其他人提出同樣的問題。 – cppprog 2014-09-23 23:10:21
「穿越」? 「彈出第一個項目」可能更準確。沒有必要進行任何遍歷 - 如果'$ @'存儲爲鏈表,例如,可以通過僅更改該列表的頭指針來執行「shift」,而不需要遍歷。 – 2014-09-23 23:37:52
在尋求本網站的幫助之前,您通常會希望您花費一些自己的努力試圖追蹤解決方案。 – 2014-09-23 20:20:12
給出的兩行等價於'lib = $ 1; shift',而不是'lib = $ 1 shift' - 分號有所不同。 – 2014-09-23 23:39:38