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

Gna*_*awk 2 ant bash appium

我想写一个蚂蚁脚本

  1. 启动一个新终端
  2. 更改用户
  3. 并运行 Appium 会话

这是我到目前为止所拥有的,但它没有做任何事情

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

Dav*_* W. 5

财产的价值是${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>
Run Code Online (Sandbox Code Playgroud)

这样,您可以<exec>为所有 Unix 风格的操作系统设置一个<exec>任务,并为所有其他操作系统 (Windows) 设置另一个任务。

也明白之间的差别<arg value="..."/><arg line="..."/>。我不知道 的确切命令结构gnome-terminal,但是当您将某些内容作为 avalue传递时,您将其作为单个参数传递——即使其中有空格。例如:

<exec executable="foo">
   <arg value="-f foo -b bar"/>
</exec>
Run Code Online (Sandbox Code Playgroud)

将执行就像我在命令行中输入的一样:

$ foo "-f foo -b bar"   # This is one command with one parameter. Note the quotation marks!
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

<exec executable="foo">
   <arg line="-f foo -b bar"/>
</exec>
Run Code Online (Sandbox Code Playgroud)

将执行就像我在命令行中输入的一样:

$ foo -f foo -b bar # 这是一个有四个参数的命令

这相当于上面的 Ant 任务:

<exec executable="foo">
   <arg value="-f"/>
   <arg value="foo"/>
   <arg value="-b"/>
   <arg value="bar"/>
</exec>
Run Code Online (Sandbox Code Playgroud)

目前,您正在尝试执行:

$ /bin/bash -c "gnome-terminal su appium" "appium &"

如果这是你想要的,那很好。顺便说一句,您可以跳过 Unix 上的整个 /bin/bash 内容:

<exec executable="gnome-terminal" os="unix" spawn="true">
    <arg value="su appium"/>
    <arg value="appium &amp;"/>
</exec>
Run Code Online (Sandbox Code Playgroud)