как поймать возвращаемое значение из муравей ssh ​​задачи - PullRequest
1 голос
/ 02 июня 2011

Я определил макрос в ANT, который проверяет, существует ли dir на удаленном linux box:

<macrodef name="checkIfDirExists">
    <attribute name="host" />
    <attribute name="username" />
    <attribute name="password" />
    <attribute name="dir" />
    <sequential>
        <runcommand executable="[ -d @{dir} ]" host="@{host}" username="@{username}" password="@{password}"/>
    </sequential>
</macrodef>

runcommand - это просто макрос-обёртка для задачи sshexec, которая проверяет некоторые дополнительные вещи,но в основном это просто sshexec.

. Прямо сейчас, если я запускаю это, это работает так, что если каталог существует, сборка продолжается, но если он не существует, сборка завершается с тех пор, как [ -d @{dir} ] возвращаемое значение равно 1.

Я хочу иметь возможность проверить возвращаемое значение, чтобы я мог поместить его в тег conditional, например, если каталог существует, пропустить, и если он не создаетэто с mkdir.

Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Это полный удар в темноте, я не знаю, позволит ли тебе муравей сделать это.Однако, если он вызывает bash на удаленном хосте, он должен работать.

<macrodef name="checkIfDirExists">
    <attribute name="host" />
    <attribute name="username" />
    <attribute name="password" />
    <attribute name="dir" />
    <sequential>
        <runcommand executable="[ -d @{dir} ] || mkdir @{dir}" host="@{host}" username="@{username}" password="@{password}"/>
    </sequential>
</macrodef>

Таким образом, если каталог существует, он замкнется и вернется успешно.Если он не существует, он будет вызывать mkdir.Если mkdir потерпит неудачу, то муравей потерпит неудачу.

0 голосов
/ 11 февраля 2016

Чтобы получить код выхода команды, используйте комбинацию resultproperty и failonerror:

<sshexec command="[ -d @{dir} ]" ... failonerror="false" resultproperty="exitCode"/>

Код выхода будет находиться в свойстве с именем exitCode после этого.

См. Ant sshexec docs .Работает для Ant 1.9.4 и выше.

...