在Bash中,在for循环内部声明一个带有数字的变量

3
我找不到解决这个问题的答案,除了人们建议使用数组。但那不是我想要的。我想在for循环内部声明一系列变量,这些变量的名称相同,只有索引号不同。
I=0
For int in $ints;
Do i=[$i +1]; INTF$i=$int; done

它并没有真正起作用。当我运行脚本时,它认为中间部分INTF$i=$int是一个命令。


1
我找不到解决这个问题的答案,除了人们建议使用数组之外。那是因为你应该使用数组。 - 123
我会使用数组来实现。 - hek2mgl
是的,如果你真的不想使用数组,可以参考Bash FAQ 006来实现这个功能。 - Etan Reisner
2个回答

5
没有数组,你需要使用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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接