Bash - Возвращаемое значение из индекса в родительский script - программирование
Подтвердить что ты не робот

Bash - Возвращаемое значение из индекса в родительский script

У меня есть два сценария Bash. Родительский скрипт вызывает индекс для выполнения некоторых действий и возврата значения. Как вернуть значение из индекса в родительский script? Добавление return в индекс и уловка значения в родительском файле не работало.

4b9b3361

Ответ 1

Я предполагаю, что эти сценарии выполняются в двух разных процессах, т.е. вы не "выбираете" один из них.

Это зависит от того, что вы хотите вернуть. Если вы хотите только вернуть код выхода от 0 до 255, тогда:

# Child (for example: 'child_script')
exit 42
# Parent
child_script
retn_code=$?

Если вы хотите вернуть текстовую строку, вам придется сделать это через стандартный вывод (или файл). Есть несколько способов сделать это, самый простой:

# Child (for example: 'child_script')
echo "some text value"
# Parent
retn_value=$(child_script)

Ответ 2

Вот еще один способ вернуть текстовое значение из дочернего скрипта, используя временный файл. Создайте файл tmp в parent_script и передайте его в child_script. Я предпочитаю этот способ, а не парсинг вывода из скрипта

родитель

#!/bin/bash
# parent_script
text_from_child_script='/bin/mktemp'
child_script -l $text_from_child_script
value_from_child='cat $text_from_child_script'
echo "Child value returned \"$value_from_child\""
rm -f $text_from_child_script
exit 0

Детский

#!/bin/bash
# child_script
# process -l parm for tmp file

while getopts "l:" OPT
do
    case $OPT in
      l) answer_file="${OPTARG}"
         ;;
    esac
done

read -p "What is your name? " name

echo $name > $answer_file

exit 0

Ответ 3

вернуть значение из индекса и проверить переменную $? которые содержат возвращаемое значение