bash:如何传递包含空格的参数

时间:2017-05-27 10:09:10

标签: linux bash shell arguments

我有两个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"

1 个答案:

答案 0 :(得分:3)

而不是尝试构建一个“看起来像”带有所有参数的字符串的单个字符串(如果你真的想要去那条路线,你可以尝试eval)尝试使用数组:

files=("file1" "abc $1" "def $1")
upload.sh "${files[@]}"