访问参数
执行 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