Я хотел бы выйти из сценария, если функция сработала. Обычно это не проблема, но это становится проблемой, если вы используете замену процесса.Выход Bash и замещение процесса
$ cat test.sh
#!/bin/bash
foo(){
[ "$1" ] && echo pass || exit
}
read < <(foo 123)
read < <(foo)
echo 'SHOULD NOT SEE THIS'
$ ./test.sh
SHOULD NOT SEE THIS
Основываясь на CodeGnome’s answer это похоже на работу
$ cat test.sh
#!/bin/bash
foo(){
[ "$1" ] && echo pass || exit
}
read < <(foo 123) || exit
echo 'SHOULD SEE THIS'
read < <(foo) || exit
echo 'SHOULD NOT SEE THIS'
$ ./test.sh
SHOULD SEE THIS
Подсказка: ваше построение foo не оценивает, что вы думаете. Как написано, ваша функция foo всегда вернет true. Вероятно, вы хотели, чтобы foo содержал '{test -n" $ 1 "&& echo pass; } || выйдите 1' вместо этого. –