Более читаемая альтернатива
if [ "$VAR" ]; then
echo "Error msg" 1>&2
exit 1
fi
Я знаю, что это не то, что Вы ищете. Но это - то, что необходимо записать. Используя &&
и ||
здесь является несколько загадочным. Я понятия не имею, что Вы помните (или misremembering), но независимо от того, что это, если никто здесь не может даже предположить, каково это, это уверенный не является что-то, что квалифицирует как “читаемое”.
Между прочим, отметьте кавычки вокруг $VAR
. Всегда помещайте двойные кавычки вокруг подстановок переменных, если Вы не знаете, почему необходимо пропустить кавычки и почему безопасно сделать так. (Вам не нужны кавычки внутри [[ … ]]
, но Вы уверенный делаете внутри [ … ]
).
eval
подлый путь состоит в том, чтобы сгруппировать команды, но использование его не квалифицирует как читаемое.
Другой способ произвести вывод в другой команде состоит в том, чтобы сделать это в замене команды. Снова, это не квалифицирует как читаемое.
[ "$VAR" ] && exit 1$(echo "error message" >&2)
Без некоторой формы группирующейся конструкции (является ли это фигурными скобками или некоторой другой составной формой как if
/then
/fi
или while
/do
/done
), Вы не можете выполнить больше чем одну команду в основном процессе оболочки; все кроме каждый будет в подоболочке.