Bash
將部分命令行參數儲存到使用者數組中
我能夠做到這一點,
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
任何幫助,如何從第 m 個位置開始將 n 個 args 儲存在數組中?
在
bash
(and alsozsh
and中,參數展開orksh93
的一般形式是:Substring Expansion
${parameter:offset:length}
如果
length
省略了,你會得到 fromoffset
到參數的結尾。在你的情況下:
array=(2 46 7 4 2 1 1 1 23 4 5) store=( "${array[@]:5}" ) printf '%s\n' "${store[@]}"
將從
6th
元素生成到最後一個元素。與
$@
:printf '%s\n' "${@:5}"
將生成 from
$5
到位置參數的結尾。另請注意,您需要引用數組變數以防止
split+glob
對其元素進行運算符。使用
zsh
,您可以使用另一種語法:print -rl -- $argv[5,-1]