Вы можете попросить gpg
вести себя тихо с--quiet
:
gpg --quiet --use-embedded-filename snafu.gpg
man $SHELL
рассказывает
&& logical AND
Таким образом, правило правой стороны будет оцениваться только в том случае, если левая сторона имеет значение ИСТИНА. Поскольку вы используете соглашение 0 и 1. 0 - ЛОЖЬ, а 1 - ИСТИНА.
Теперь давайте обсудим код, а затем объяснение.
echo $(( 0 && 0 ))
&& -не будет оценивать правую часть, так как левая сторона равна 0 и, следовательно, печатает 0
$ echo $(( 1 && 0 ))
&& -оценит правую часть, поскольку левая сторона равна 1, и, к сожалению, правая сторона равна 0, и, следовательно, напечатает 0
echo $(( 0 && 1 ))
&& -не будет оценивать правую часть, так как левая сторона равна 0 и, следовательно, печатает 0
echo $(( 1 && 1 ))
&& -оценит правую сторону, поскольку левая сторона равна 1, и ура, правая сторона также равна 1 и, следовательно, напечатает 1.
Редактировать
Как указал один пользователь, ОБОЛОЧКА &&
имеет свойство короткого -замыкания (наряду с логическим ). И следует отметить, что это логически не эквивалентно постоянному короткому замыканию -.
Это соответствует определению «логического и », что представляет собой &&
в арифметическом контексте. Таблица истинности выглядит следующим образом:
| F | T
--+-----+-----
F | F | F
--+-----+-----
T | F | T
«А и В» истинны только в том случае, если истинны и А, и В.
В арифметическом контексте оболочки операторы реализуются в соответствии со стандартом C , где «истина» — любое не-нулевое значение, а «ложь» — ноль. Это действительно противоположно кодам выхода, где «истина» (или, скорее, «успех» )равна нулю, а «ложь» (или, скорее, «ошибка» )— это любой не-нуль. стоимость.
См. также:
$ echo $((2 && 2))
1
$ echo $((-1 && 2))
1