iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 21
0

參數

預設變數

$0:腳本檔名
$1:檔名後面的第一個參數,以此類推...
$#:後面接參數個數
"$@" : "$1","$2","$3"
"$*" : "$1c$2c$3c$4",c 爲分割字元,預設爲空白

shift

shift [n]
  • n 參數的個數
  • 從 $1 $2 $3 這一串參數依序往左丟掉

我們來個 bash script 來方便說明:

$!/bin/bash
shift 0      
echo 0: $0
echo 1: $1
echo 2: $2
echo 3: $3
echo 4: $4

當你輸入 ./shift.sh file1 file2 file3 file4 file5 的時候,會顯示:

0:./shift.sh
1:file1
2:file2
3:file3
4:file4

如果腳本改成這樣:

$!/bin/bash
shift 1
echo 0: $0
echo 1: $1
echo 2: $2
echo 3: $3
echo 4: $4

則結果會變成:

0:./shift.sh
1:file2
2:file3
3:file4
4:file5

上面這兩個腳本的差別在於 shift,前者把第0個變數移調,但是 $0 代表檔名,shift 是無法對他起任何作用的,因此像後者的 shift 1 就是代表把 $1,也就是檔名之後的第一個參數往左丟掉,因此輸出結果看不到 file1。

參考資料

https://www.computerhope.com/unix/bash/shift.htm


上一篇
[Day 20] 自己的 Shell Script 自己寫 - 變數與字元
下一篇
[Day 22] 自己的 Shell Script 自己寫 - 判斷式(1)
系列文
30 天不間斷-資工隨筆大雜燴30

尚未有邦友留言

立即登入留言