2012-03-12 5 views
1

특정 문자열 (double 값 포함)이 포함 된 줄 수를 검사하는 간단한 스크립트를 작성하려고합니다. 그러나 몇 가지 문제가 있습니다.Bash 스크립트 이중 표현식이 문제를 일으킬 때

/counter: line 4: [: 0.1: integer expression expected 

누군가가 나를 도울 수하십시오 : 나는 내가 해결하는 방법을 잘 모르겠어요 다음과 같은 오류가 그것을 실행하려고 할 때 여기에 내가 그러나

#!/bin/bash 

x=0.1 
while [ $x -le 5 ] 
do 
     cat b.txt | grep "Red: $x" | wc -l >> blah 
     x=$(($x + 0.1)) 
done 

를 작성한 스크립트입니다 아웃?

예제 파일 :

Red: 0.1 
Red: 1.1 
Red: 2.3 
Red: 0.5 
Red: 3.9 
Red: 1.0 
Red: 4.4 
+0

제쳐두고, Cat의 쓸모없는 사용은 단순히 'grep -c'Red : $ x "b.txt >> blah'로 바꿀 수 있습니다. http://partmaps.org/era/unix/award.html을 참조하십시오. – tripleee

답변

2

강타 정수만와 함께 작동합니다. bash 매뉴얼 페이지의 ARITHMETIC EVALUATION 섹션을 참조하십시오.

(부동 소수점을 사용한 경우에도 소수점 이하 자릿수로 문제가 발생할 수 있습니다. 값 1, 0.2는 2 등으로 4.7이 47이되도록 고려하십시오. 그런 다음 십진수를 grep 할 수 있습니다. . 사람의 숫자 뒤에 문자 뒤에 마침표)

1

당신이 bc를 사용할 수 있습니다 여기에 괜찮은 튜토리얼 부동 소수점 수식 :

[ $(bc<<<"$x<5") -eq 1 ] 
1

이 유형의 non-Integer Mathematical calculations에는 awk를 사용하는 것이 더 좋습니다.

관련 문제