在Bash中存储切片参数的最佳方法是什么?

时间:2015-08-26 10:50:50

标签: bash arguments

实施例

>>./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. 如何再次将其作为另一个函数的参数重用?

1 个答案:

答案 0 :(得分:1)

在原始Bourne shell中,只有位置参数列表可用于此。幸运的是,现代衍生产品有一种阵列变量类型,专门针对这种情况。

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