Как получить любой код выхода в bash при запуске скрипта внутри скрипта? - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь запустить скрипт, где внутри я запускаю другой скрипт, после его запуска я хочу получить код выхода и что-то с ним сделать, но я получаю только 0 каждый раз.

Я также пробовал разные подходы, используя sourcing или упаковывая команду в функцию, а также дал оба права на выполнение с chmod -x.

a.sh

#!/usr/bin/env bash

mkdir data
mkdir -p data/test

b.sh

#!/usr/bin/env bash

set -x

(bash a.sh) &
pid=$!

wait $pid
exitCode=$?

echo $pid
echo $exitCode

Результат с bash b.sh:

+ pid=7399
+ wait 7399
+ bash a.sh
mkdir: data: File exists
+ exitCode=0
+ echo 7399
7399
+ echo 0
0

Результат с bash a.sh:

mkdir: data: File exists (no exit code)

Результат с mkdir data:

mkdir: data: File exists (exit code 1)

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

Версия Bash: GNU bash, версия 3.2.57 (1) -релиз (x86_64-apple-darwin18)

1 Ответ

0 голосов
/ 08 июля 2019

Решено с помощью: set -e

Ссылка: https://ss64.com/bash/set.html

Это позволяет немедленно выйти, если что-то пошло не так. В моем случае вторая команда вернула 0, и поэтому я каждый раз получал 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...