Bash使用for循环中的数字声明变量

时间:2016-01-27 15:03:42

标签: linux bash scripting

除了要求使用数组的人之外,我找不到这个问题的答案。那不是我想要的。我想在for循环中声明一些变量,除了索引号以外,它们具有相同的名称。

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

它确实不起作用。当我运行脚本时,它认为中间部分INTF$i=$int是一个命令。

2 个答案:

答案 0 :(得分:3)

如果没有数组,则需要使用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

答案 1 :(得分: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