在bash中获取位置参数

在bash中获取位置参数,bash,Bash,我有一个名为foo的bash脚本,它具有可变数量的参数,第一个参数是必需的,即: foo a1 b2 b3 b4 ... 我知道在bash中$1将获得参数a1,但是有没有办法获得所有其他参数?$@或者,$*似乎可以得到包括a1在内的所有参数。您可以使用命令来实现这一点。这将删除$1,您可以访问从$1开始的其余参数 #!/bin/sh echo $* shift echo $* shift将移动所有参数,运行前面的示例将给出: $ test_shift.sh a b c d e a b c

我有一个名为foo的bash脚本,它具有可变数量的参数,第一个参数是必需的,即:

foo a1 b2 b3 b4 ...
我知道在bash中$1将获得参数a1,但是有没有办法获得所有其他参数?$@或者,$*似乎可以得到包括a1在内的所有参数。

您可以使用命令来实现这一点。这将删除$1,您可以访问从$1开始的其余参数

#!/bin/sh

echo $*
shift
echo $*
shift
将移动所有参数,运行前面的示例将给出:

$ test_shift.sh a b c d e
a b c d e
b c d e

切片
$@
数组

echo "${@:2}"
./foo.sh 1 2 3 4

#!/bin/bash
echo $1;
echo $2;
echo $3;
echo $4;
将输出:

1
2
3
4

如果其他人想知道:特殊的
$@
数组以索引1开头,而常规的bash数组(默认情况下)是基于0的。应用
shift
一次(如其他答案所示)将允许直接使用
$@
,而无需切片。