Выполнить массив строк, описывающих команду оболочки

Мне трудно выполнить набор командных строк, хранящихся в виде строк в массиве. Мой код выглядит так:

arr=( "sudo apt-get update" "sudo apt-get install xxx" )
...
arr=( ${arr[@]} "ln -s /path1 /path2" )
etc...

# Then I loop on the array of command 
for (( i = 0 ; i < ${#arr[@]} ; i++ ))
do
     eval ${arr[$i]}
done

Когда он перебирает массив, массив становится больше, чем количество хранимых в нем команд. Как будто пробелы в моих строках разбивают массив на большее количество элементов Типичный вывод такой как

usage: sudo -h | -K | -k | -L | -V

Это означает, что из строки берется только 'sudo' и я не понимаю почему!

Спасибо

7
задан renard 14 October 2011 в 22:06
поделиться