2013-07-18 4 views
0

Я хочу использовать Баш скрипт для вызова других сценариевDebian Bash Shell Подстановка переменной ошибка

#!/bin/bash 
./anotherScript $1 $2 
./anotherScript $3 $4 
#and so on 

Я не знаю, сколько переменных будет принято, поэтому я использую переменную «я» для запуска от 0 до $ # и пытается получить $ {$ i} в качестве аргумента. Однако Баш дает мне плохую ошибку замещения. Я пробовал следующее:

a=1 
echo $a 
echo ${$a} #doesn't work 
echo ${${a}} #doesn't work 

Ни один из них не работает. Я ожидаю $ {$ a} для вычисления $ {1}, который должен дать мне первый аргумент. Я просмотрел справочную страницу, а также руководство по настройке bash on the Linux Documentation Project site

Что я делаю неправильно?

ответ

4

С Баш, вы можете сделать косвенную ссылку с !:

echo ${!a} 
+0

Это решило проблему. Благодарю. –

1

Я дал William Перселл в upvote. Другой способ сделать это, чтобы присвоить значение массива (который был бы 0 относительно):

list=("[email protected]") 
a=0 
echo ${list[a]} 
a=1 
echo ${list[a]} 
2

Другим способом сделать это:

while [ $# -gt 0 ] 
do 
    ./anotherscript $1 $2 
    shift 2 
done 

Вы можете настроить, что решать, что происходит с нечетное число аргументов.

+0

Это также будет работать, так как мой скрипт никогда не будет иметь количество аргументов. Благодарю. –

Смежные вопросы