У мене те саме питання, але не можу його задати, оскільки це було б дублікат.
Прийнята відповідь, використовуючи вихід, не працює, коли сценарій трохи складніше. Якщо ви використовуєте фоновий процес для перевірки стану, вихід тільки виходить з цього процесу, оскільки він працює в підколонці. Щоб вбити скрипт, ви мусите його явно вбити (принаймні, це єдиний спосіб, який я знаю).
Ось невеликий сценарій, як це зробити:
#!/bin/bash
boom() {
while true; do sleep 1.2; echo boom; done
}
f() {
echo Hello
N=0
while
((N++ <10))
do
sleep 1
echo $N
# ((N > 5)) && exit 4 # does not work
((N > 5)) && { kill -9 $$; exit 5; } # works
done
}
boom &
f &
while true; do sleep 0.5; echo beep; done
Це краща відповідь, але все ще неповна. Я дійсно не знаю, як позбутися частини стріли .
1
послідовно. Якщо сценарій призначений для запуску іншого сценарію, ви можете визначити свій власний набір коду статусу з конкретним значенням. Наприклад,1
== тести не вдалися,2
== компіляція не вдалася. Якщо сценарій є частиною чогось іншого, вам може знадобитися відкоригувати коди, щоб вони відповідали практикам, які використовуються там. Наприклад, коли частина тестового набору працює за допомогою автоматичного коду, код77
використовується для позначення пропущеного тесту.