2016-01-27 102 views
-1

我找不到對這個問題的答案,而不是人們要求使用數組。這不是我想要的。我想在一個for循環中聲明一些變量,除了一個索引號以外,它的名字相同。Bash在for循環內聲明變量與一個數字

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

它並不真正的工作。當我運行腳本時,它認爲中間部分INTF$i=$int是一個命令。

+3

那不是猛砸...... – 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