实施例
>>./my_script.sh a b c
如果我尝试echo
参数2
- ...
,我可能会这样做
>>echo "${@:2}"
a b c
如果我想将${@:2}
存储在变量中,这些方法将不起作用
my_params=${@:2}
或
my_params="${@:2}"
但这种方式是工作
my_params="$(echo ${@:2})"
我可以感受到这种方式的丑陋。所以,我的问题是
存储切片参数的正确方法是什么?
如何将这些切片参数分配给变量?
如何再次将其作为另一个函数的参数重用?
答案 0 :(得分:1)
在原始Bourne shell中,只有位置参数列表可用于此。幸运的是,现代衍生产品有一种阵列变量类型,专门针对这种情况。
array=("${@[2:]}") # note parentheses for array
echo "${array[0]}" # first arg of array
command "${array[@]}" # pass array as quoted arguments