在bash
中,此语法可用于获取从$2
开始的命令行参数列表:
echo "${@:2}"
此语法在sh
(/bin/dash
)中似乎不起作用。
在sh中模拟它的最佳方法是什么?
答案 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