2015-08-26 32 views
0

在Bash中存儲切片參數的最佳方式是什麼?

>>./my_script.sh a b c 

如果我嘗試echo說法2 - ...,我可能會做

>>echo "${@:2}" 
a b c 

如果我想存儲變量${@:2},這些方法都不行

my_params=${@:2} 

my_params="${@:2}" 

但這種方式工作

my_params="$(echo ${@:2})" 

我能感受到這樣的醜陋。所以,我的問題是

  1. 什麼是正確的方式來存儲切片參數?

  2. 如何將這些切片參數賦值給變量?

  3. 如何重新使用它作爲另一個函數的參數嗎?

+0

我認爲bash只是在上述所有3種情況下將'my_params'設置爲'「b c」'。你在想什麼工作/不工作? – yaegashi

回答

1

在原始的Bourne shell中,只有位置參數列表可用於此。幸運的是,現代衍生品具有專門針對這種情況的數組變量類型。

array=("${@[2:]}") # note parentheses for array 
echo "${array[0]}" # first arg of array 
command "${array[@]}" # pass array as quoted arguments 
相關問題