我有能力做到这一点,
array=(2 46 7 4 2 1 1 1 23 4 5)
store=(${array[*]:5:5})
echo ${store[@]} # print 1 1 1 23 4 5
现在,我不需要从用户数组中提取位置 5 的 5 个元素,而是需要提取命令行参数从 5以及以后。我尝试了类似的方法,但输出为空
store=(${$[*]:5:5}) # <----------------- Something to be changed here?
echo ${store[@]} # EMPTY OUTPUT
任何帮助,如何从位置存储 n 个参数月在数组中继续?
答案1
在bash
( 以及zsh
和中ksh93
,一般形式为参数扩展或者Substring Expansion
是:
${parameter:offset:length}
如果length
省略,您将获得从 到offset
参数末尾。
在你的情况下:
array=(2 46 7 4 2 1 1 1 23 4 5)
store=( "${array[@]:5}" )
printf '%s\n' "${store[@]}"
将从6th
元素到最后一个元素生成。
和$@
:
printf '%s\n' "${@:5}"
将生成从$5
到位置参数的末尾。
另请注意,您需要引用数组变量以防止split+glob
对其元素进行运算符。
通过zsh
,您可以使用另一种语法:
print -rl -- $argv[5,-1]