Создание области / сегмента кучи в Linux

Кроме того: вы можете удалить wc -l , используя grep -c Файл конфигурации FailoverVM.Name .
Но если вы хотите использовать числа больше 9 десятичных (например, не 123456789abcdef), ваш шаблон должен быть FailoverVM [0-9] [0-9]? Имя или ] FailoverVM [0-9] {1,2} Имя в -E расширенном режиме.
Также для i $ VMCount является синтаксической ошибкой; Я предполагаю, что вы имеете в виду для i в $ (seq $ VMCount) .


Вы можете прочитать переменную косвенно в bash с помощью ! (bang) и еще одна переменная, содержащая имя:

for i in $(seq $VMCount); do
  selname=FailoverVM${i}Name
  selip=FailoverVM${i}IP
  selport=FailoverVM${i}Port
  echo name ${!selname} is IP ${!selip} and port ${!selport}
done

, которое меньше похоже на мушкетон, чем eval , но все же неуклюже. Но вы не можете установить переменную таким образом, поэтому вы должны использовать для этого массив. И вы не можете сделать это для функций, поэтому вместо этого напишите одну функцию, которая принимает аргумент, чтобы сообщить ей, какие (набор) переменных использовать:

for i in $(seq $VMCount); do 
  selip-Failover${i}IP
  selport=Failover${i}Port
  checkVM[$i]=$(nc -vvz ${!selip} ${!selport} 2>/devnull)
}
StartVM() { # first argument to a function is accessed as $1 or ${1}
  selname=FailoverVM${1}Name
  if [[ checkVM[$1] =~ 'succeeded' ]]
  # only need to check the part that matters
  then echo number $1 name ${!selname} already up 
  else echo starting number $1
    su -c "VboxManager startvm ${!selname} -headless" vbox
  # note " because ' prevents the variable expansion
  fi
]
...
StartVM 1 # and 
StartVM 2 # etc

OTOH, если вы можете изменить конфигурацию для использования переменных массива для всего подобного

FailoverIP[1]=10.255.1.1 FailoverName[1]=robin
FailoverIP[2]=10.255.2.2 FailoverName[2]=bluejay
etc

это сделало бы все намного проще. И тогда вам не нужно повторно использовать grep для файла для подсчета записей, вы можете просто использовать, например, $ {# FailoverName [@]}

3
18.12.2015, 12:54
0 ответов

Теги

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