如何创建一个包含第 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 "$@"