如何将带空格的参数从bash脚本传递到bash脚本?
我有一个脚本,用于处理数据、创建参数并将它们发送到第二个脚本。其中一个参数包含空格 脚本1.sh:如何将带空格的参数从bash脚本传递到bash脚本?,bash,list,for-loop,argument-passing,git-bash,Bash,List,For Loop,Argument Passing,Git Bash,我有一个脚本,用于处理数据、创建参数并将它们发送到第二个脚本。其中一个参数包含空格 脚本1.sh: args=() args+=("A") args+=("1 2") args+=("B") . script2.sh ${args[@]} 脚本2.sh: for f in "$@" do echo f=$f done 我希望将“12”作为单个参数,但要单独接收它们: f=A f=1 f=2 f=B 我还尝试将script2中的输入转换为listin=($@),并使用for f in${
args=()
args+=("A")
args+=("1 2")
args+=("B")
. script2.sh ${args[@]}
脚本2.sh:
for f in "$@"
do
echo f=$f
done
我希望将“12”
作为单个参数,但要单独接收它们:
f=A
f=1
f=2
f=B
我还尝试将script2中的输入转换为listin=($@)
,并使用for f in${in[@]}
对其进行迭代,但得到了相同的结果
因此,问题可能在于以下之一:构建参数列表;通过构建列表;解析输入;或者对输入进行迭代
如何将带空格的参数从bash脚本传递到bash脚本?谢谢
*我正在Windows上使用git bash。将数组作为参数传递时,只需添加引号:
args=()
args+=("A")
args+=("1 2")
args+=("B")
. script2.sh "${args[@]}"
@AlikElzin kilaka:在接收端,也使用引号:
in=(“$@”)
将“${args[@]}”与“$@”中的f的组合在一起,成功了。谢谢。@AlikElzin kilaka我本想建议在“$@”
中使用f的,但在您的示例中,它已经被引用了,所以我感到困惑。将“${args[@]}”
与“$@”中的f的组合使用,成功了。谢谢。只是为了f的记录;do
与“$@”中f的相同;执行
。