如何将 space 的参数从 bash 脚本传递到 bash 脚本?

How to pass an argument with space from bash script to bash script?

我有一个脚本可以操作数据、创建参数并将它们发送到第二个脚本。其中一个参数包含 space.

script1.sh:

args=()
args+=("A")
args+=("1 2")
args+=("B")
. script2.sh ${args[@]}

script2.sh:

for f in "$@"
do
  echo f=$f
done

我想将 "1 2" 作为单个参数,但要分别接收它们:

f=A
f=1
f=2
f=B

我也尝试将 script2 中的输入转换为列表 in=($@) 并使用 for f in ${in[@]} 对其进行迭代,但得到了相同的结果。

因此,问题可能出在以下其中一项:构建参数列表;通过构建列表;解析输入;或遍历输入。

如何将带有 space 的参数从 bash 脚本传递到 bash 脚本? 谢谢。

* 我在 Windows.

上使用 git-bash

您只需要在将数组作为参数传递时添加引号:

args=()
args+=("A")
args+=("1 2")
args+=("B")
. script2.sh "${args[@]}"