2017-04-26 14 views
1

と、リスト内の各ラインの比較:私はこのようなリストを持っている数

cat mandi 
234 
562 
3256 
77 
356 

私は数xで、このリストの各行を比較したいし、それがより大きいとき、その出力を印刷数。

私はこのスクリプトを試していますが、期待した結果がありません。

#!/bin/bash 

i=1; 

for i in {1..$mandi} 
do  
    if [ "$i" -gt 10000 ]; 
    then 
     echo "probleme" 
    else 
     echo "Not problem" 
    fi 
done 
+0

ここでは '$のmandi'の値がどのようなものですか?また、パラメータ拡張の前にブレース拡張が行われるので、ここで何をしてもうまく動作しない可能性があります – Inian

+0

また、値をファイルに保存して同じものを操作したい場合は言及していません。 – sjsam

答えて

0

これを試してみてください:

#!/bin/bash  

while read line; 
do 
    if ((${line} > 1000)); 
    then 
     echo "problem" 
    else 
     echo "good" 
    fi 
done < mandi 
+0

' $ {line} 'は、単に' line'を使うことができます。 – 123

+0

#movissありがとうございました。しかし、ファイルがすべての行ではなく「問題」と表示されている場合にのみ印刷したい。 – diamant123

+0

@ 123あなたは正しいですが、$ {}構文が良い練習だと思います。 – moviss

0

あなたは同じことを達成するためにはawkのようなツールを使用することができ、例えば

awk '$0>350{print $0,"-problem";next}{print $0,"-no problem"}' mandi 

234 -no problem 
562 -problem 
3256 -problem 
77 -no problem 
356 -problem 

+1

ありがとうございますsjsam! – diamant123

0

は、この情報がお役に立てば幸い適切な数で350を置き換え:)

#!/bin/bash 

i=1 
mandi=`cat mandi` # loads to file mandi contents to a variable 
mandi=($mandi) # converts to list 
for i in "${mandi[@]}" 
do 
    if [ $i -gt 10000 ]; 
    then 
     echo "probleme" 
    else 
     echo "Not problem" 
fi 
done 
+0

ありがとう – diamant123

0

この使用してください:

cat mandi | while read num ;do if [ $num -gt 500 ] ;then echo "problem";else echo "no problem";fi; done; 

結果:

no problem 
problem 
problem 
no problem 
no problem 
関連する問題