!(year % 4)
в арифметическом контексте будет сначала принимать результат year % 4
, давая значение от 0 до 3. Если значение равно 0(year
кратно 4 ), тогда результатом всей операции будет 1 (!0
), иначе !1
, !2
или !3
. Все они оцениваются как 0.
Это стандартная практика для целочисленного логического вычисления в большинстве языков.
Операция, такая как 0 && 3
, является ложной, поскольку целочисленный нуль является ложным при логическом арифметическом вычислении.
Код выхода команды (( 10 > 6 ))
равен нулю. Это отличается от того, что вы получаете на выходе, например.echo "$(( 10 > 6 ))"
(что равно 1 ). Код выхода сигнализирует "успех" или "неудача". Тест был проведен успешно, поэтому он возвращает ноль. Не могли бы вы использовать сравнение в арифметическом контексте,его значение будет равно 1:
(( var = 10 > 6 ))
echo "$var" # prints 1
!
вне арифметического контекста работает то же самое. Он превращает ноль в 1, а не -ноль в ноль. Интерпретация этого в оболочке будет другой, хотя ноль означает "успех", а не "логическую ложь" (это может не показаться странным, если вы привыкли думать о оболочке утилиты «не дают сбоев», а не «успешны» ).
grep -q -e PATTERN file && echo 'grep did not fail (and found PATTERN)'
! grep -q -e PATTERN file && echo 'grep failed (and did not find PATTERN)'
Нулевой код возврата сигнализирует об «успехе» в Unix, поскольку никакой дополнительной информации передавать не нужно.
Сбой определяется ненулевым -кодом выхода. Характер сбоя передается фактическим значением кода выхода. Допустимые коды отказа: 1 -127. Значение этих кодов должно быть задокументировано в руководстве по утилите. Вышеупомянутые статусы выхода предназначены для завершения работы утилиты по сигналу.
На справочной странице mwm описано, как можно установить декорации клиента с помощью строки ресурсов в файле ~/.mwmrc, например
Mwm*XTerm.clientDecoration: none
который соответствует всем xterms. Вместо имени класса XTerm
вы можете использовать имя, которое вы даете конкретным экземплярам xterm при их запуске, например xterm -name nodeco...
и конфигурациюMwm*nodeco.clientDecoration: none