如何将 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[@]}"
我有一个脚本可以操作数据、创建参数并将它们发送到第二个脚本。其中一个参数包含 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[@]}"