Условный результат выписки. Результат непосредственно в Bash без использования, если

Каждый сетевой адаптер в linux имеет булев параметр sysctl accept_local (/proc/sys/net/ipv4/conf/eth0/accept_local). Попробуйте установить его в 0 для всех задействованных адаптеров (дополнительно может потребоваться изменить таблицу маршрутизации в соответствии с тестовой настройкой).

Также убедитесь, что rp_filter (/proc/sys/net/ipv4/conf/eth0/rp_filter) включен (не 0).

Ссылка: http://code.metager.de/source/xref/linux/stable/Documentation/networking/ip-sysctl.txt

0
30.09.2018, 00:07
2 ответа

С круглыми скобками все работает так, как описано:([[ $r -gt 0 ]] && { echo foo $r; }) || ([[ $r -lt 0 ]] && { echo bar $r; }) || { echo foobar $r; }

1
28.01.2020, 02:18

Обратите внимание, что ваши случаи не пересекаются, поэтому на самом деле вам не нужен ||.

[[ $r -gt 0 ]] && echo foo $r;     # positive 
[[ $r -lt 0 ]] && echo bar $r;     # negative
[[ $r -eq 0 ]] && echo foobar $r;  # zero

why is this not working

&&и ||оцениваются слева направо, между ними нет разницы в приоритете, что затрудняет выполнение с ними логики в стиле if.. then.. else. Вам нужно добавить группировку вручную с помощью фигурных скобок или скобок. (Или просто используйте оператор if, он существует не просто так.)

Например, это всегда печатает nonnegative, независимо от того, печатает ли negative:

[ $x -ge 0 ]] || echo negative && echo nonnegative

Если вы хотите, чтобы разница была положительной, вам нужно инвертировать ее в средней ветви, например.:

[[ $r -lt 0 ]] && echo bar $(( -r ));
3
28.01.2020, 02:18

Теги

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