如何在/ bin / dash中模拟“ $ {@:2}”

时间:2019-12-29 04:16:56

标签: bash shell sh posix

bash中,此语法可用于获取从$2开始的命令行参数列表:

echo "${@:2}"

此语法在sh/bin/dash)中似乎不起作用。

在sh中模拟它的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

(shift; echo "$@")

使用由括号创建的子shell可以确保不修改外部作用域中的"$@"


作为另一种方法(较丑陋,但避免了需要子shell),您可以删除第一个参数,并在以后重新添加它:

argOne=$1               # put $1 in $argOne
shift                   # rename $2 to $1, $3 to $2, etc
echo "$@"               # Pass the new argument list to echo
set -- "$argOne" "$@"   # Create a new argument list, restoring argOne before the rest