2017-04-26 19 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 

有適當數量的更換350

+1

謝謝你sjsam! – diamant123

0

希望這有助於:)

#!/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