Bash脚本声明

时间:2015-07-21 18:46:04

标签: bash

我正在尝试创建一个简单的bash脚本,它会询问用户输入,然后根据他们选择的数字回显声明中的值。

declare -A bla
bla[1]="bla1"
bla[2]="bla2"

echo "What bla would you like?"
echo ""
echo "1) bla1"
echo "2) bla2"

read answer
echo "bla[$answer]"

当我运行此脚本时,我希望输出为“bla1”或“bla2”,具体取决于它们是否输入1或2.虽然我只得到输出:“bla [1]”或“bla [2]

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

您想在此处使用bash的select命令:

bla=( bla1 bla2 )
PS3="What bla would you like? "
select b in "${bla[@]}"; do
    [[ $b ]] && break
done
echo "you want: $b"

注意:

  • 常规数组就足够了,如果你只是使用整数索引,则不需要关联数组。
  • 需要使用数组扩展"${bla[@]}"将数组扩展为其组成元素。
  • 当用户输入有效回复时,$b变量将为非空,break语句将退出select“循环”。

答案 1 :(得分:1)

想出来我正在使用

#!/bin/sh代替#!/bin/bash,需要修改${bla[$answer]}

感谢您的帮助。