我需要在远程Mac盒上安装自制型号,并且由于某些设计决策,我可以在该机器中运行任何内容的唯一方法是执行ANT脚本。
我正在尝试调整Homebrew网站上的说明,并运行相当于:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
...来自蚂蚁构建文件。在这里是:
<project name="default" default="homebrew">
<target name="ruby" >
<echo message="Checking Ruby..." />
<exec executable="/usr/bin/ruby">
<arg value="--version"/>
</exec>
<echo message="Checking Ruby done!" />
</target>
<target name="homebrew" depends="ruby">
<echo message="Installing Homebrew..." />
<exec executable="/usr/bin/ruby">
<arg line=' -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"'/>
</exec>
<echo message="Homebrew installation done!" />
</target>
</project>
这是我得到的:
ruby:
[echo] Checking Ruby...
[exec] ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin16]
[echo] Checking Ruby done!
homebrew:
[echo] Installing Homebrew...
[exec] -e:1: `$(' is not allowed as a global variable name
[exec] Result: 1
[echo] Homebrew installation done!
如何解决这个$(' is not allowed as a global variable name
问题?有可能以某种方式逃脱$
符号吗?简而言之,我该如何调整此蚂蚁构建文件以安装自制酿造剂?我可以将Homebrew Antotiontration命令放在BASH脚本中,但我宁愿将语法直接修复。
ant的exec
任务通常会在复杂的命令行操作上窒息。通常,最好坚持多个exec
步骤,其中包含一系列单独的arg value
S,而不是完整的arg line
s。
而是尝试一下:
<target name="ruby">
<echo message="Checking Ruby..." />
<exec executable="/usr/bin/ruby">
<arg value="--version"/>
</exec>
<echo message="Checking Ruby done!" />
</target>
<target name="homebrew" depends="ruby">
<echo message="Installing Homebrew..." />
<exec executable="curl" outputproperty="homebrew.install">
<arg value="-fsSL" />
<arg value="https://raw.githubusercontent.com/Homebrew/install/master/install" />
</exec>
<exec executable="/usr/bin/ruby" failonerror="true">
<arg value="-e"/>
<arg value="${homebrew.install}"/>
</exec>
<echo message="Homebrew installation done!" />
</target>
这里首先使用 exec
的 outputproperty
属性将远程安装脚本存储为ant属性,然后作为参数传递给ruby。
(注意我还将failonerror="true"
添加到安装步骤中,但这只是我的用例假设。如果需要,可以将其删除。(