2016-01-27 2 views
-1

Я не могу найти ответ на эту проблему, кроме тех, кто просит использовать массив. Я этого не хочу. Я хочу объявить ряд переменных внутри цикла for с тем же именем, за исключением номера индекса.Bash объявление переменной с числом внутри цикла for

I=0 
For int in $ints; 
Do i=[$i +1]; INTF$i=$int; done 

На самом деле это не работает. Когда я запускаю скрипт, он считает, что средняя часть INTF$i=$int - это команда.

+3

Это не Bash ... – Biffen

+1

'Я не могу найти ответ на эта проблема, кроме тех, кто просит использовать массив вместо этого. «Это потому, что вы должны использовать массив. – 123

+0

Я бы использовал для этого массив. – hek2mgl

ответ

0

Без массива, вам нужно использовать declare команду:

i=0 
for int in $ints; do 
    i=$((i +1)) 
    declare "intf$i=$int" 
done 

С массива:

intf=() 
for int in $ints; do 
    intf+=($int) 
done 
0

Bash не обрабатывает динамические имена переменных красиво, но вы можете использовать массив для хранения переменных и результатов.

[/tmp]$ cat thi.sh 
#!/bin/bash 
ints=(data0 data1 data2) 
i=0 
INTF=() 
for int in $ints 
do 
((i++)) 
INTF[$i]=$int 
echo "set $INTF$i INTF[$i] to $int" 
done 
[/tmp]$ bash thi.sh 
set 1 INTF[1] to data0 
Смежные вопросы