Bash数组和循环不能一起工作

时间:2013-05-13 01:50:27

标签: arrays bash loops if-statement

我在bash脚本中很新,并且无法弄清楚为什么这段代码不起作用(是的,我已经用Google搜索了)。

这是我的代码:

if [ $usertype = normal ]
then
    commands[0]="hi" ; descriptions[0]="get greeted"
    commands[1]="test" ; descriptions[1] = "test"
elif [ $usertype = hacker ]
    commands[0]="hi" ; descriptions[0]="get greeted"
    commands[1]="test" ; descriptions[1] = "test"
fi

alias fhelp='
for ((i=0; i<=${commands[@]}; i++))
do
    printf '%s %s\n' "${commands[i]}" "${descriptions[i]}"
done'

有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您不能在单引号内使用单引号。这样做,它将"'"视为单引号的字符串并将它们连接起来。

alias fhelp='
for ((i=0; i<=${commands[@]}; i++))
do
  printf '"'"'%s %s\n'"'"' "${commands[i]}" "${descriptions[i]}"
done'

使用${#commands[@]}获取数组长度。

答案 1 :(得分:1)

elif [ $usertype = hacker ]
# missing then!
commands[0]="hi" ; descriptions[0]="get greeted"