18. 获取参数范围
正如您所知,$@
或$*
给出传递给 shell 脚本的所有参数。
但是,如果您只想获取一系列参数(而不使用 $1
、$2
、$3
等显式调用它们),则可以使用此处显示的方法。
${@:$start:$count}
$start
- 是要从中提取的参数的起始位置。 当$start
为负数时,起始位置从末尾开始计算,即起始值为 3 表示从第三个参数开始,起始值为 -3 表示从倒数第三个参数开始。$count
- 指示从$start
位置提取多少个参数。 这是可选的。 当您不提供$count
时,bash 将从$start
中提取所有剩余的参数。
参数提取示例:
$ cat args3.sh
echo "\$@ = $@"
start=2
count=3
echo "\${@:2} = ${@:$start}"
echo "\${@:2:3} = ${@:$start:$count}"
start=-4
echo "\${@:-4} = ${@:$start}"
echo "\${@:-4:3} = ${@:$start:$count}"
echo "Looping range of arguments"
for i in "${@:$start:$count}"
do
echo "$i"
done
$ ./args3.sh 1 2 3 4 5 6
$@ = 1 2 3 4 5 6
${@:2} = 2 3 4 5 6
${@:2:3} = 2 3 4
${@:-4} = 3 4 5 6
${@:-4:3} = 3 4 5
Looping range of arguments
3
4
5
@
替换为*
以获得相同的结果。