Принцип ошибки в том , что for i in $arrayVM
устанавливает i
к первому элементу в arrayVM
так как там нет индекса. Я удивлен, что это не выдает ошибку команды echo
, если только первый элемент массива не числовой.
То, что вам нужно, это итеративная форма for
:-
for (( i=0; i<${#arrayVM[*]}; ++i ))
do
echo ${arrayVM[$i]}>>list
done
Тем не менее, это излишне многословно: гораздо проще:
for e in "${arrayVM[@]}"
do
echo $e>>list
done
Это присваивает e
каждому элементу по очереди, не перечисляя их.
В свете ответа Fedorqui, если arrayVM
не нужна где-то еще, существует гораздо более простой способ создания файла списка:-
cat /orch/servers | grep $1 | awk '{print $1}' >/orch/list
Или, так как cat
не нужна:
grep $1 </orch/servers | awk '{print $1}' >/orch/list