【发布时间】:2021-02-20 20:09:15
【问题描述】:
我想将一个数组传递给一个函数并将数组中的值用作命令参数,如下所示:
command可以接收N个参数,例如:param1param2oneparam1 a2 b3 conotherparam
my_func() {
command param1 param2 $1 $2 $3
}
my_arr=("1 a" "2 b" "3 c")
my_func "oneparam" ${my_arr[@]} "onotherparam"
但我没有将其全部作为函数中的单个参数接收,因此$1 只是1 a 而不是"1 a" "2 b" "3 c"
那么我虽然可以这样做:
my_func() {
command param1 param2 $1 $2 $3
}
my_arr=("1 a" "2 b" "3 c")
params=${my_arr[@]/%/\"} # 1 a" 2 b" 3 c"
my_func "oneparam" "$params" "onotherparam"
但它只将引号放在每个元素的末尾。
如何在每个数组元素的两边加上引号?
【问题讨论】:
-
应该
command得到三个参数,par1,par2,和1 a 2 b 3 c,还是5,如par1,par2,1 a,2 b,3 c? -
@BenjaminW。一共是5个参数。
-
目前尚不清楚您要在这里做什么。访问 shellcheck.net 会发现许多引用问题。但是您的功能并不清楚您是否期望
my_arr的所有元素或仅其中一个元素。如所写,您只会得到一个单词拆分参数。 -
par1和par2是什么?
标签: linux bash function shell variable-substitution