在shell中的变量中动态读取和存储值

时间:2015-12-14 22:20:45

标签: shell sh ksh

我正在尝试这样做......

echo "Enter the number of fruits\n"
read fruit

echo $inp # this will print the number of fruits to enter

如果水果是4

脚本应该能够动态地要求用户输入[4]水果并将其存储到4变量中,如下所示。

fruit1=apple
fruit2=jack fruit
fruit3=pineapple
fruit4=grapes

我尝试了以下内容,但这并没有帮助

for i in `seq 1 $fruit`
                    do
                            echo "Enter fruit$i\n"
                            read fruit[$i]
                            echo "fruit[$i]"
                    done

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以在每一步动态增长数组。假设您从计数开始,初始化空数组并逐个添加元素。

count=4; fruits=(); 
for i in `seq "$count"`; 
       do read f; fruits+=( "$f" ); 
       done; 
echo "${fruits[@]}"

适用于版本: 版本AJM 93t + 2010-06-21。

这适用于AIX中的BASH

答案 1 :(得分:1)

这是ksh88 - 和pdksh - 兼容版本:

count=4
set -A fruits
i=0
while (( i < count )); do
    echo "Enter fruit$i"
    read fruits[i]
    (( i += 1 ))
done
echo "${fruits[@]}"

在Solaris 8上测试/bin/ksh(ksh88),在MirBSD上测试pdksh(其原生mksh支持+=()表示法,但我安装了其他shell用于delta测试)。