訪問引數
執行 Bash 指令碼時,傳遞給指令碼的引數根據其位置命名:$1
是第一個引數的名稱,$2
是第二個引數的名稱,依此類推。
缺少的引數只是求值為空字串。檢查引數是否存在可以按如下方式進行:
if [ -z "$1" ]; then
echo "No argument supplied"
fi
獲取所有引數
$@
和 $*
是與所有指令碼引數互動的方式。引用 Bash 手冊頁 ,我們看到:
$*
:從一個開始擴充套件到位置引數。當擴充套件在雙引號內發生時,它會擴充套件為單個單詞,每個引數的值由 IFS 特殊變數的第一個字元分隔。$@
:從一個開始擴充套件到位置引數。當擴充套件發生在雙引號內時,每個引數都會擴充套件為單獨的單詞。
獲取引數的數量
$#
獲取傳遞給指令碼的引數數量。一個典型的用例是檢查是否傳遞了適當數量的引數:
if [ $# -eq 0 ]; then
echo "No arguments supplied"
fi
例 1
遍歷所有引數並檢查它們是否是檔案:
for item in "$@"
do
if [[ -f $item ]]; then
echo "$item is a file"
fi
done
例 2
遍歷所有引數並檢查它們是否是檔案:
for (( i = 1; i <= $#; ++ i ))
do
item=${@:$i:1}
if [[ -f $item ]]; then
echo "$item is a file"
fi
done