2016-01-27 103 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