我想在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
的数字序列,而不是随机数
答案 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