Правило «пары» 1 -4 и 2 -3, которые вы отметили, скорее всего, не являются дубликатами, но вы не видите различий в выводе команды, которую вы использовали. если вы используете iptables -L -v
вы получите дополнительные выходные данные, которые могут показать различия -это обычно происходит (по моему опыту ), когда правила работают на разных интерфейсах.
dpt:domain
и dpt:bootps
— это разные спецификации порта назначения. dpt:domain
— это порт назначения 53 (домен или DNS ), а dpt:bootps
— порт назначения 67 (DHCP ).
Редактировать :вы правы, эта ситуация не имеет прямого отношения к Docker. Это относительно распространенная ситуация, которая была раскрыта Docker в вашей среде, но так же часто возникает за пределами среды Docker.
Предполагая, что вы используете оболочку bash
, похоже, что вы хотите использовать массив:
root[1]=path/to/root1
root[2]=path/to/root2
for i in {1..2}; do
printf '%s\n' "${root[i]}"
done
или запишите присваивание root
как присваивание одного массива (обратите внимание, что первый индекс равен 0 в массиве bash
, если не используются явные индексы ),
root=( path/to/root1 path/to/root2 )
for i in {0..1}; do
printf '%s\n' "${root[i]}"
done
и/или перебирать значения массива (, а не его индексы ),
root=( path/to/root1 path/to/root2 )
for i in "${root[@]}"; do
printf '%s\n' "$i"
done
(чтобы просто вывести массив, цикл не нужен, printf '%s\n' "${root[@]}"
достаточно будет печатать значения массива на отдельных строках)
В общем, вы можете не знать, какие индексы используются массивом (массив может иметь прерывистые индексы ), поэтому для перебора доступных индексов вы должны перебрать"${!root[@]}"
:
root=( path/to/root1 path/to/root2 )
for i in "${!root[@]}"; do
printf '%s\n' "${root[$i]}"
done