【问题标题】:bash: How to pass arguments containing spacesbash:如何传递包含空格的参数
【发布时间】:2017-10-28 04:08:53
【问题描述】:

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

【问题讨论】:

    标签: linux bash shell arguments


    【解决方案1】:

    与其尝试构建一个“看起来像”具有所有参数的字符串的单个字符串(如果你真的想走这条路,你可以尝试eval)尝试使用数组:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多