1

シェル スクリプトを少し最適化しようとしており、変数に格納されているユーザー入力に基づいて配列の内容を表示できるようにしたいと考えています。

ここに私のスクリプトからの抜粋があります

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か。私はいくつかの評価を試しましたが、うまくいかないようです。

どんな助けでも大歓迎です。

編集: 私のリクエストがあいまいすぎる場合はお知らせください。ありがとう!

4

1 に答える 1

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
于 2012-12-13T04:27:45.427 に答える