如何创建一个包含第 n 个特定参数中的所有其余参数的变量

如何创建一个包含第 n 个特定参数中的所有其余参数的变量

如何创建一个包含第 n 个特定参数中的所有其余参数的变量,例如字符串保存从第 3 个参数到第 9 个参数的所有数据,位于名为 $a 的变量中...提前致谢。

答案1

在 Bash/ksh/zsh 中,您可以使用类似的方法${@:3:7}将第三个到第九个参数作为不同的单词,或者${*:3:7}将它们与IFS作为连接符的第一个字符连接起来。 (7,因为从 3 到 9 总共有 7 个。)

所以:

$ set -- $(seq 11 21)
$ echo "${*:3:7}"
13 14 15 16 17 18 19

或者

$ a="${*:3:7}"

但是,如果您想将这些参数作为参数传递给另一个命令,请"${@:3:7}"直接在相关命令行上使用,即

somecmd "${@:3:7}"

如果您需要在标准 shell 中执行此操作,则不能使用${var:n:m}.相反,您需要shift去掉第一个参数,然后使用"$@",所以:

arg1=$1
arg2=$2
shift 2
somecmd "$@"

相关内容