- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
set -e
myfunc() {
echo "START"
v=$(asdasdsd 1 2 3)
echo "FINISH"
}
myfunc && echo "OK"
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
set -e
myfunc() {
echo "START"
v=$(asdasdsd 1 2 3)
echo "FINISH"
}
myfunc && echo "OK"
Выводит:
START
./b.sh: line 5: asdasdsd: command not found
FINISH
OKset -e
myfunc() {
echo "START"
v=$(asdasdsd 1 2 3)
echo "FINISH"
}
myfuncSTART
./a.sh: line 5: asdasdsd: command not found
Я слышу, как ветры говорят:
"В вечный сон"
Вот где это кончается...
В смерти я живу...
Через вечность к вечному покою...
Глубоко в неизвестность...
На земле я просто гость...
"В вечный сон"
сама функция написана криво.
Ты или проверяешь результат (тогда будет финиш) ил не проверяешь (и тогда все упадет) или правишь сому функцию
или береш нормальынй ЯП (питон, перл, руби)
Команда вернула -1. Зачем падать? Все логично, что дальше продолжается работа.
Зачем тебе $(), кстати?
А вот set -e включает падение в случе ошибки во всех запускаемых коммандах тоже
try catch в sh нет (и вероятно в баш -- тоже).
> try catch в sh нет (и вероятно в баш -- тоже).
Как это нет, если есть
В твоем случае ты не можешь поймать то, что вылетело из дебрей hui, если hui это явно не прокинул
обрабатывай ошибки по человечески, или возьми язык с исключениями или монадами с результатом.
В си ты тоже не можешь обработать такую ситуацию
если хочешь вернуть шибку в $?, то вероятно die
Так что делать то?