数组的索引作为字母/单词

时间:2011-02-08 12:47:24

标签: shell scripting unix ksh

在ksh shell脚本中,有没有办法可以做到:

a[daemon1]=1
a[daemon2]=1
a[daemon3]=1

我想在守护程序名称上设置标志,检查标志是否为高然后执行某些操作 与awk / perl相似。

由于

3 个答案:

答案 0 :(得分:1)

为什么不使用ksh数组?

$ x[a]=1
$ x[b]=ddd
$ echo ${x[*]}
1 ddd
$ echo ${x[a]}
1

http://docstore.mik.ua/orelly/unix/ksh/ch06_03.htm

答案 1 :(得分:1)

Korn shell支持关联数组:

typeset -A foo    # create an associative array
bar=abc
baz=qux
foo[$bar]=def
foo[$baz]=ghi
for index in ${!foo[@]}
do
    echo "Index: $index, Value: ${foo[$index]}"
done

结果:

Index: abc, Value: def
Index: qux, Value: ghi

答案 2 :(得分:0)

为什么不使用 a_daemon1 等名称?

您可能会查看的关联数组的符合标准的代码:

varcmd()
{
    eval $(echo $*|tr -d "./;")
}

varcmd test '$'$fn$oldrev
if [ $? -eq 0 ]; then
    varcmd $fn$rev='$'$fn$oldrev
    varcmd unset $fn$oldrev
else
    varcmd $fn$rev=$oldrev
fi