我想写一个
的蚂蚁脚本这是我到目前为止所做的事情,但它没有做任何事情
<exec executable="/bin/bash" os="${os.unix}" spawn="true">
<arg value="-c" />
<arg value="gnome-terminal su appium" />
<arg value="appium &" />
</exec>
答案 0 :(得分:3)
属性${os.unix}
的价值是多少?如果您要使用os
参数,通常会给它一个字符串常量而不是属性值。
<exec executable="/bin/bash" os="unix" spawn="true">
<arg value="-c" />
<arg value="gnome-terminal su appium" />
<arg value="appium &" />
</exec>
这样,您可以为所有Unix样式的操作系统执行<exec>
任务,为所有其他操作系统执行另一个<exec>
任务(Windows)。
同时了解<arg value="..."/>
和<arg line="..."/>
之间的区别。我不知道gnome-terminal
的确切命令结构,但当您将某些内容作为value
传递时,您将其作为单个参数传递 - 即使它中包含空格它。例如:
<exec executable="foo">
<arg value="-f foo -b bar"/>
</exec>
将执行就像我在命令行中键入它一样:
$ foo "-f foo -b bar" # This is one command with one parameter. Note the quotation marks!
如果我这样做:
<exec executable="foo">
<arg line="-f foo -b bar"/>
</exec>
将执行就像我在命令行中键入它一样:
$ foo -f foo -b bar#这是一个带有四个参数的命令
这相当于上面的Ant任务:
<exec executable="foo">
<arg value="-f"/>
<arg value="foo"/>
<arg value="-b"/>
<arg value="bar"/>
</exec>
目前,您正在尝试执行:
$ / bin / bash -c&#34; gnome-terminal su appium&#34; &#34; appium&amp;&#34;
如果这是你想要的,那很好。顺便说一句,你可以跳过Unix上的整个/ bin / bash东西:
<exec executable="gnome-terminal" os="unix" spawn="true">
<arg value="su appium"/>
<arg value="appium &"/>
</exec>
答案 1 :(得分:1)
试试这个:
<exec executable="/bin/bash" spawn="true" >
<arg value="-c" />
<arg value="x-terminal-emulator -e 'sudo -u appium appium'" />
</exec>
os="${os.unix}"
似乎不正确,我已将其彻底删除。
-c
和bash命令需要位于单独的arg
元素中。
su
将启动新shell。改为使用带有参数的sudo
。
gnome-terminal
的命令需要引用。
x-terminal-emulator
应该比gnome-terminal
更便携。
实际上,使用bash似乎根本不需要。尝试:
<exec executable="x-terminal-emulator" spawn="true" >
<arg value="-e" />
<arg value="sudo -u appium appium" />
</exec>