如何在ant中编写多个exec参数

时间:2014-06-06 19:27:35

标签: bash ant appium

我想写一个

的蚂蚁脚本
  1. 启动新终端
  2. 更改用户
  3. 并运行Appium会话
  4. 这是我到目前为止所做的事情,但它没有做任何事情

        <exec executable="/bin/bash" os="${os.unix}" spawn="true">
            <arg value="-c" />
            <arg value="gnome-terminal su appium" />
            <arg value="appium &amp;" />
        </exec>
    

2 个答案:

答案 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 &amp;" />
</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 &amp;"/>
</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>