使用数组作为argv?

Spa*_*Man 5 bash scripts

在 bash 脚本中,我调用一个带有大量参数的函数,例如/bin/meaningoflife需要 42 个参数。有没有办法可以将数组传递给命令,而不是手动输入所有 42 个参数?例如:

arr = ("arg1", "arg2", "arg3")
/bin/meaningoflife {argv=arr}
Run Code Online (Sandbox Code Playgroud)

是相同的

/bin/meaningoflife "arg1" "arg2" "arg3"
Run Code Online (Sandbox Code Playgroud)

谢谢!

ste*_*ver 11

bash 语法是

arr=("arg1" "arg2" "arg3")          # no commas, no whitespace around the assignment
/bin/meaningoflife "${arr[@]}"      # double quotes prevent word splitting of elements
Run Code Online (Sandbox Code Playgroud)

更正式地说,您希望数组元素之间用空格分隔,而不是在赋值中“无逗号”。写成同样有效

arr=(
  "arg1"
  "arg2"
  "arg3"
)
Run Code Online (Sandbox Code Playgroud)

例如 - 对于长列表来说通常更容易阅读。

请参阅数组(Bash 参考手册)