Bash:如何创建一个包含多单词标记的参数列表的变量?

Bash:如何创建一个包含多单词标记的参数列表的变量?,bash,Bash,我想创建一个变量,它本质上是传递给命令或函数的参数列表。下面带有arg_字符串的模式适用于foo、bar和baz,但不适用于“多字标记”,我希望命令将其视为单个参数 #!/bin/bash function func() { for arg in "$@" do echo ${arg} done } arg_string="foo bar baz \"multi word token\"" arg_string="foo bar baz multi\ word\ token

我想创建一个变量,它本质上是传递给命令或函数的参数列表。下面带有arg_字符串的模式适用于foo、bar和baz,但不适用于“多字标记”,我希望命令将其视为单个参数

#!/bin/bash
function func() {
  for arg in "$@"
  do
    echo ${arg}
  done
}

arg_string="foo bar baz \"multi word token\""
arg_string="foo bar baz multi\ word\ token"
arg_string="foo bar baz 'multi word token'"
func ${arg_string}
以下是输出:

foo
bar
baz
'multi
word
token'
当我想要的时候:

foo
bar
baz
multi word token

只需在函数调用之前粘贴一个
eval

 eval func ${arg_string}