Для того, чтобы сделать &&
- ||
командную работу, попробуйте:
printf '%s\n' $ | grep -xq $ && { echo $?; echo Found ;} || { echo $?; echo Not found ;}
Заметки:
Команда test (
[
) и команда substitution ($(...)
) не нужны.Тонкость конструкции
a && b || c
заключается в том, чтоc
она будет выполнена не только в случаеa
сбоя, но и в случаеb
сбоя. Так как вашb
состоит изecho
утверждений, которые обычно должны быть успешными, это обычно не должно быть проблемой.Другие методы тестирования членства в массиве см. В разделе «Проверка наличия в массиве Bash значения» .