bash脚本根据用户选择动态显示数组元素

时间:2015-09-17 15:30:05

标签: arrays bash

我必须编写一个bash脚本,可以让用户选择要显示的数组元素。

例如,数组具有这些元素

ARRAY =(零一二三四五六)

我希望脚本能够在用户输入数组索引

后打印出该元素

让用户输入(在一行中): 1 2 6 5

然后输出将是:一个二六五

输入的索引可以是单个(输入: 0 输出:)或多个(如上),输出将对应于索引(es)输入

非常感谢任何帮助。

感谢

2 个答案:

答案 0 :(得分:1)

ARRAY=(zero one two three four five six)
for i in $@; do
    echo -n ${ARRAY[$i]}
done
echo

然后像这样调用这个脚本:

script.sh 1 2 6 5

它会打印出来:

one two six five

答案 1 :(得分:0)

您可能希望将关联数组用于通用解决方案,即假设您的密钥不仅仅是整数:

# syntax for declaring an associative array
declare -A myArray
# to quickly assign key value store
myArray=([1]=one [2]=two [3]=three)
# or to assign them one by one
myArray[4]='four'
# you can use strings as key values
myArray[five]=5
# Using them is straightforward
echo ${myArray[3]} # three
# Assuming input in $@
for i in 1 2 3 4 five; do
    echo -n ${myArray[$i]}
done
# one two three four 5

另外,请确保您使用Bash4(版本3不支持它)。有关详细信息,请参阅this answer and comment