Добавление выделения IP-адресов с помощью ifcfg дает неправильный широковещательный адрес?

На самом деле здесь можно использовать стандартные расширения параметров (вам просто не хватило подстановочного знака):

$ args=a:b:c:
$ x=b
$ echo "${args%$x:*}"
a:
$ if [ "$args" != "${args#*$x:}" ]; then echo 'b: is present'; fi
b: is present

(или в равной степени"${args%$x:*}")

Недостатком является то, что вам нужно поставить двоеточие после b, поэтому a:bили простое bне будет соответствовать, а также будет соответствовать a:bb:c. ([[ $var = *$x:* ]], а также очевидное совпадение шаблона с caseимеют тот же недостаток.)

Совпадение со всеми b, b:c, a:b, a:b:c, не совпадающее с a:bb:c, было бы немного сложнее. Все, о чем я могу думать, это что-то вроде этого:

args=a:b:c
x=b
IFS=:                   # affects globally
set -f                  # affects globally...
for x in $args; do
    if [ "$x" = "b" ]; then
        echo "b is present"
    fi
done

Если вы не хотите выписывать все случаи:

args=a:b:c
x=b
found=0
case "$args" in
    $x)     found=1;;
    $x:*)   found=1;;
    *:$x)   found=1;;
    *:$x:*) found=1;;
esac
if [ "$found" = 1 ]; then...; fi

Намного проще с регулярными выражениями (в Bash):

args=b:c
x=b
if [[ $args =~ (^|:)$x(:|$) ]]; then
    echo "b found"
fi
0
18.07.2020, 01:16
1 ответ

Подсеть с 192.168.2.0по 192.168.2.7192.168.2.0/29, т. е. маска сети — 255.255.255.248, а не 255.255.255.255. В192.168.2.0/29192.168.2.0указан сетевой адрес, т. е. недопустимый адрес хоста.

маршрутизация подсети

Вы должны выяснить, маршрутизирует ли ваш интернет-провайдер 192.168.2.0/29на IP-адрес вне этого диапазона (, например.192.168.1.25)или находится ли исходящий IP-адрес в этой сети. Если подсеть маршрутизируется, вам не нужен какой-либо IP-адрес на этом интерфейсе.

1
18.03.2021, 23:19

Теги

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