Я должен не согласиться с одним из комментариев в одной точке:
[ "$x" == "valid" ] && echo "valid" || echo "invalid"
Нет, это не сумасшедший вкладчик
Это просто похоже на одного, хм, непосвященного ...
Он использует общие шаблоны в качестве языка;
И после того, как вы выучили язык.
На самом деле, приятно читать
Это простое логическое выражение, состоящее из одной специальной части: ленивая оценка логических операторов.
[ "$x" == "valid" ] && echo "valid" || echo "invalid"
Каждая часть является логическим выражением; первое может быть истинным или ложным, два других всегда истинны.
(
[ "$x" == "valid" ]
&&
echo "valid"
)
||
echo "invalid"
Теперь, когда оно оценивается, проверяется первое. Если оно ложно, то второй операнд логики и &&
после него не имеет значения. Первое не соответствует действительности, поэтому оно не может быть первым, а второе, в любом случае, верно.
Теперь в этом случае первая сторона логики или ||
ложна, но это может быть истиной, если другая сторона - третья часть - верна.
Итак, третья часть будет оценена - в основном, написание сообщения в качестве побочного эффекта. (Он имеет результат 0
для истины, который мы здесь не используем)
Другие случаи похожи, но проще - и - обещаю! легко читаются!
(У меня его нет, но я думаю, что ветеран UNIX с седой бородой очень помогает в этом.)