2017-06-14 23 views
1

以下のコードは割り当ての一部ですが、なぜ私は "MIN"値を割り当てられないのか理解していない私の頭を机の上に置いています。私はMINとMAXを$ {LIST [0]}に割り当てようとしましたが、最初のインデックスを配置するだけでしたが、配列全体が返されてしまいました。私はこれをCentOS VM上で実行しています(違いは分かりません)。私は最初と2番目の "if"ステートメントの始まりがより良いロジックを必要としていることを知っていますが、私はMINとMAXの出力にもっと関心があります。Unix Scripting - 最小値と最大値の検索(Bashシェル)

#!/bin/bash 
LIST=() 

read -p "Enter a set of numbers. " LIST 

MIN= 
MAX= 

if [ ${#LIST[*]} == 0 ]; then echo "More numbers are needed."; fi 

if [ ${#LIST[@]} -gt 0 ]; then 
     for i in ${LIST[@]}; do 
       if [[ $i -gt $MAX ]]; then 
         MAX=$i 
       fi 

       if [[ $i -lt $MIN ]]; then 
         MIN=$i 
       fi 
     done 

echo Max is: $MAX. 
echo Min is: $MIN. 

fi 
+0

?空の配列として設定し、readを使用してスカラー値を割り当てます。 LISTを配列として維持するには、-aスイッチをインクルードする必要があります。 – grail

答えて

0

コードはほぼ機能しています。

  1. $リストは配列ではなく、可変である、にread -p "Enter a set of numbers. " LISTを変更するため:

    read -p "Enter a set of numbers. " -a LIST

  2. ダウン5行$ MIN$ MAX初期化コードを移動

    、(ループの直前のforの直前):

    MIN= 
    MAX= 
    

    ...そしてそれを変更します。

    MIN=${LIST[0]} 
    MAX=$MIN 
    

そして、それは動作します。テスト:

echo 3 5 6 | ./minmax.sh 

出力:あなたはどのタイプLISTで確認する必要があり

Max is: 6. 
Min is: 3. 
+0

このソリューションが気に入っています。私はもともと私のMINロジック(.. || MIN-eq "")にORを追加していました。私が覚えていなかったことは、他のプログラミング言語を使用していることです。これは、文字列リテラルであり、整数ではありませんでした。 $ {LIST [0]}がすべての設定番号(または単一の文字列)を印刷していた理由は意味がありました。ありがとう、@ agc。 –

関連する問題