Как получить статус возврата команды в подоболочке в основную оболочку? - PullRequest
0 голосов
/ 30 апреля 2018

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

Я запускаю приведенный ниже скрипт из Unix Box A, который имеет беспарольный SSH-доступ к Box B, чей IP указан в скрипте как ip_addr.

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

То есть, если приведенная ниже команда не выполнена:

echo "cmd" | system_program> 2>> /dev/null

затем echo $? должен вывести ненулевое значение, и я смогу использовать это значение для принятия решения о дальнейших действиях.

Фрагмент моего сценария:

sample.sh :

ip_addr="xxx.xxx.xx.xx"

status=$(ssh -q -T $ip_addr << EOF
rm /tmp/program.log; echo "cmd" | system_program> 2>> /dev/null; echo $?
EOF
)

1 Ответ

0 голосов
/ 30 апреля 2018

Вам не нужен документ здесь или эхо. Попробуйте:

ssh -q -T $ip_addr 'rm /tmp/program.log; echo "cmd" | system_program> 2>> /dev/null'

Или, если вы хотите использовать здесь-doc, установите errexit:

status=$(ssh -q -T $ip_addr << EOF
set -o errexit
rm /tmp/program.log; echo "cmd" | system_program> 2>> /dev/null
EOF
)
...