我试图使用shell脚本自动化一个小型构建过程。构建过程基本上是:
cd /location/to/build.xml
我创建了一个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"
答案 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构建路径作为第一个字符串,参数作为第二个字符串。这就是你想要的: - )。