Bash Логическая операция над переменной

Предполагая, что вы используете исходные пакеты ядра и не перенастроили pacman вручную, вам не нужно это делать.

Вы можете легко это проверить, посмотрев отметку времени в /boot/initramfs -linux.img. Если он новее, чем /boot/vmlinuz -linux.img, значит, initramfs был не нужно вручную обновлять его.

-1
12.07.2019, 21:53
1 ответ

Вы можете использовать побитовые операторы, присутствующие в арифметическом выражении:

result=$((a|b|c))

(и аналогично &для AND и ^для XOR ).

Логические операторы работают и в арифметических выражениях:

result=$((a||b||c))

(и аналогично &&).

Присваивание может быть частью самого выражения (В этом случае допускаются пробелы вокруг =):

(( result = a || b || c ))

Если вместо этого вы используете trueи false, скобки вообще не нужны:

a=false
b=false
c=true
a || b || c
result=$?

Проблема в том, что в данном случае 0 означает истину.

В квадратных скобках только неустановленное или пустое значение само по себе является ложным. Итак, вы можете использовать

a=
b=
c=1
[[ $a || $b || $c ]]
result=$?

Опять же, ноль соответствует истине, но это можно исправить, изменив его на

! [[ $a || $b || $c ]]
2
28.01.2020, 05:09

Теги

Похожие вопросы