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