LINUX.ORG.RU

Вывод сообщения о результате выполнения.

 


0

1

Добрый день всем, я новичок в линукс. Есть скрипт с 5 функциями, функции все выполняются последовательно. Задача: нужно после успешного выполнения всех команд внутри функции вывести сообщение о успешном выполнении именно этой функции. А если внутри функции не выполнилась хоть одна команда или была любая ошибка, то вывести сообщение о неудачном выполнении функции и в какой конкретно функции это было. Пытался создать условие через $?, Но там хранится вывод результата последней выполненной команды, а как получить результат любой не выполненной команды, если она не последняя, будь то она 1я из 10, или 3я из 10. Пример с заведомой ошибкой в 1й и 3й функцией, но может быть любая другая.

#!/bin/bash
function one (){
touch 1.t
catttttt 1.t
rm *.t
}
function two (){
touch 2.t
cat 2.t > 22.t
rm *.t
}
function three (){
touch 3.t
catttttt 3.t
rm *.t
}
one
two
three


Последнее исправление: andreyzer0 (всего исправлений: 2)

touch 2.t && cat 2.t > 22.t && rm *.t && echo "success!"?

damix9 ★★★
()

Зачем нерелевантный тег linux? Тут тег bash должен быть.

damix9 ★★★
()

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

alex1101
()
Ответ на: комментарий от GrayFox

А потом функцию передаём в функцию

echo_on_fail() { $1 || echo "$1 FAILED" ; }
func_x() { cmd1 && cmd2 && cmd3 ; }
echo_on_fail func_x

ratvier ★★
()

Поиграй с set -e и set -x (см. help set).

Jini ★★
()

Можно запомнить экзит код в отдельной переменной после выполнения каждой команды и перед выходом из каждой функции явно анализировать

По сути это то же самое, что уже предложили, только наглядное и новичку будет проще

pihter ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.