在bash shell脚本中将参数传递给命令

时间:2016-06-21 08:39:34

标签: bash shell

我试图使用shell脚本自动化一个小型构建过程。构建过程基本上是:

  1. cd /location/to/build.xml
  2. / Path / To / ant release。以release为参数运行ant。
  3. 我创建了一个build.sh文件,打算用./build.sh release来构建发行版,我的shell脚本文件是:

    ANT_BUILD_PATH="/Path/To/ant"
    cd "/Location/To/Build.xml"
    "$ANT_BUILD_PATH $1"
    

    当我以ant not a file or command执行此shell文件时,即使ant文件存在,我也得到./build.sh release

    此外,当我使用"$ANT_BUILD_PATH" "$1"时。脚本运行得很好。

    "$ANT_BUILD_PATH $1""$ANT_BUILD_PATH" "$1"

    之间有何区别?

2 个答案:

答案 0 :(得分:3)

不同的是,当你执行var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; var cell = sheet.getRange("B5"); Logger.log(cell.getBackground()); 时,shell执行一个名为"$ANT... $1"的命令,注意,它是一个命令,空格作为命令的一部分。所以没找到命令。

但是如果你/path/to/ant release它将执行命令"$ANT..." "$1",并将/paht/to/ant作为参数/选项。

用此测试,你会看到:

release

答案 1 :(得分:1)

"$ANT_BUILD_PATH $1"将一个字符串传递给shell,由ant构建路径的串联组成。这不是你想要的。

"$ANT_BUILD_PATH" "$1"将两个字符串传递给shell:ant构建路径作为第一个字符串,参数作为第二个字符串。这就是你想要的: - )。