如何解决从Ant调用Ruby时不允许将“$”(作为全局变量名)的问题
我需要在远程Mac机上安装Homebrew,由于一些设计决策,我在该机器上运行任何东西的唯一方法是执行Ant脚本 我正在尝试调整并运行与此等效的: /usr/bin/ruby-e$curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install …来自Ant构建文件。如下所示: 以下是我得到的: 红宝石: [echo]正在检查Ruby。。。 [exec]ruby 2.3.7p456 2018-03-28修订版63024[universal.x86_64-darwin16] [echo]检查Ruby完成! 自制: [echo]正在安装自制软件。。。 [exec]-e:1:“$”不允许作为全局变量名 [执行]结果:1 [echo]自制软件安装完成! 我如何避免$不允许作为全局变量名的问题?是否可能以某种方式逃逸$符号? 简而言之,我如何调整这个Ant构建文件来安装Homebrew?我可以将Homebrew安装命令放在一个bash脚本中,但我更愿意直接从Ant修改语法来完成它。Ant的exec任务经常会被复杂的命令行操作阻塞。一般来说,最好坚持多个exec步骤,其中包含一系列单独的参数值,而不是完整的参数行 请尝试以下方法:如何解决从Ant调用Ruby时不允许将“$”(作为全局变量名)的问题,ruby,ant,homebrew,Ruby,Ant,Homebrew,我需要在远程Mac机上安装Homebrew,由于一些设计决策,我在该机器上运行任何东西的唯一方法是执行Ant脚本 我正在尝试调整并运行与此等效的: /usr/bin/ruby-e$curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install …来自Ant构建文件。如下所示: 以下是我得到的: 红宝石: [echo]正在检查Ruby。。。 [exec]ruby 2.3.7p456 2018-03-28修订版63
<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,但这只是我的一个用例假设。如果您愿意,可以删除它。您的问题非常不清楚。您是在问如何在Ant中使用POSIX shell命令插值吗?然后,答案是:您不能,您需要在Ant中使用POSIX shell或Ant命令terpolation。首先,你为什么要使用curl,Ant没有自己的下载资产的方式吗?@JörgWMittag我编辑了这个问题,试图澄清一下。你想做什么还不是很清楚。你传递给Ruby进行计算的字符串不是有效的Ruby代码。你为什么试图使用Ruby执行shell代码?@JörgWMittag curl命令下载一个Ruby脚本。这只是自制网站推荐的一行安装。是的,curl下载一个Ruby脚本。但是,curl命令本身不是Ruby代码,所以你为什么要用Ruby执行它?这让我很困惑。太好了!这正是我想要的。谢谢。