我正在尝试优化我的shell脚本,并希望能够根据存储在变量中的用户输入显示数组的内容:
以下是我的剧本
的摘录logArr( firstLogs secondLogs thirdLogs fourthLogs)
firstLogs=( a b c d e )
secondLogs=( f g h i j )
thirdLogs=( k l m n o )
fourthLogs=( p q r s t )
echo "Please enter a top-level directory for the logger..."
count=1
for i in "${logArr[@]}"
do
echo "$count: $i"
count=`expr $count + 1`
done
read logDir
logDir=`expr $logDir - 1`
logDir=${logArr[$logDir]}
所以此时我在变量$logDir
中设置了用户输入。有没有办法用它来显示相应数组的值,即如果他们选择secondLogs
我想显示secondLogs
数组的内容而不必使用和if elif elif elif场景如果可能的话。我尝试了一些eval的东西,但我似乎无法使它工作。
感谢任何帮助。
编辑:如果我的请求太模糊,请告诉我,我很乐意澄清任何事情。谢谢!
答案 0 :(得分:0)
logArr=(firstLogs secondLogs thirdLogs fourthLogs)
firstLogs=(a b c d e)
secondLogs=(f g h i j)
thirdLogs=(k l m n o)
fourthLogs=(p q r s t)
echo 'Please enter a top-level directory for the logger...'
select logDir in ${logArr[*]}
do
break
done
set $logDir[*]
echo ${!1}
输出
Please enter a top-level directory for the logger...
1) firstLogs
2) secondLogs
3) thirdLogs
4) fourthLogs
#? 2
f g h i j