Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将带空格的参数从bash脚本传递到bash脚本?_Bash_List_For Loop_Argument Passing_Git Bash - Fatal编程技术网

如何将带空格的参数从bash脚本传递到bash脚本?

如何将带空格的参数从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${

我有一个脚本,用于处理数据、创建参数并将它们发送到第二个脚本。其中一个参数包含空格

脚本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中的输入转换为list
in=($@)
,并使用
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的
相同;执行