在Bash中管理子变量

时间:2014-11-09 12:27:44

标签: bash loops variables variable-assignment

我想在Bash中管理子变量。我可以分配子变量,但我不知道如何使用它:

#/bin/bash

n=1

for lvl in 1 2;
do
    export key$n="${RANDOM:0:2}"
    let n=$n+1
done


for num in 1 2; do

echo $key$num

done

如果我使用echo $key$num,则打印变量$num的数字序列,而不是随机数

2 个答案:

答案 0 :(得分:5)

使用数组。

for n in 1 2; do 
  key[n]="${RANDOM:0:2}"
done

for num in 1 2; do
  echo "${key[num]}"
done

请参阅http://mywiki.wooledge.org/BashGuide/Arrays

另外,在bash中你通常会从0而不是1做更好的计数,你不需要export变量,除非你想运行一些其他程序来寻找它们继承环境。

答案 1 :(得分:1)

您可以使用数组(请参阅@MarkReed),或使用declare

for n in 1 2; do
    declare -- key$n="${RANDOM:0:2}"
done

for n in 1 2; do
    v=$(declare -p key$n) ; v="${v#*=}" ; echo "${v//\"/}"
done

使用相同的功能:

key_set () # n val
{
    declare -g -- key$1=$2
}

key_get () # n
{
    local v=$(declare -p key$1) ; v="${v#*=}" ; echo "${v//\"/}"
}

for n in 1 2; do
    key_set $n "${RANDOM:0:2}"
done

for n in 1 2; do
    key_get $n
done