Похоже, что Ваш синтаксис массива прочь просто немного. Кроме того, нет никакой потребности в индексной переменной; можно использовать +=
оператор для добавления к массиву.
#!/bin/bash
FILENAME=$1
rutaServ=()
while read LINE
do
rutaserv+=($LINE)
echo "ruta -> $LINE"
done < "$FILENAME"
bash
v4 имеет новую команду, mapfile
(или readarray
) считать содержание файла в массив внезапно:
mapfile rutaServ < "$FILENAME"
К доступу оценивает от массива:
for x in "${rutaserv[@]}"; do
echo "$x"
done
На самом деле это работает для всех блоков ip в этом интерфейсе. Это означает, что если у вас есть tun0
, tun0: 0
и tun0: 1
, и вам нужно управлять всем, вы, вероятно, захотите написать tun0 +
там.
Использование «tun+» вместо «tun0» имеет смысл, если вы запускаете, например, несколько экземпляров OpenVPN на одном сервере. Несколько экземпляров создадут несколько устройств с именами tun0, tun1, tun2 и т. д., и весь их трафик должен проходить через брандмауэр (и должным образом перенаправляться ).