我有两个bash脚本如下:
#main.sh
#!/bin/bash
files="file1 \"abc $1\" \"def $1\""
./upload.sh $files
#upload.sh
#!/bin/bash
for param in "$@"; do
echo "${param}"
done
我正在尝试使用以下命令将包含空格的参数传递给main.sh
:
edeMacBook-Pro:doc Yves$ ./main.sh "Sri Lanka"
我认为$files
将是这样的:file1 "abc Sri Lanka" "def Sri Lanka"
。因此,当我./upload.sh $files
时,应将三个参数传递给upload.sh
。
然而,当我执行命令时,我得到:
file1
"abc
Sri
Lanka"
"def
Sri
Lanka"
答案 0 :(得分:3)
而不是尝试构建一个“看起来像”带有所有参数的字符串的单个字符串(如果你真的想要去那条路线,你可以尝试eval
)尝试使用数组:
files=("file1" "abc $1" "def $1")
upload.sh "${files[@]}"