C쉘에서 정수 아닌 실수 연산하려면?

foruses의 이미지

csh 스크립트에서

sign 이라는 이름의 파일 안에 -1.00000 이란 값이 들어 있을 때, 다음을 실행시키면,

#!/bin/csh
set file = `cat sign`

if ( ${file} < 0 ) echo "minus"
if ( ${file} > 0 ) echo "plus"

그런데 실행시키면, 아래 에러가 뜹니다.

if ( -1.00000 < 0 ) echo "minus"
if: Badly formed number.

-1.0000 가 정수가 아니라서 생기는 문제 같은데, 해결 방법이 있을까요?

chanik의 이미지

실수 연산만 bc에 의존하는 식으로 하시면 되겠네요.

$ echo "-1.00000 < 0" | bc
1
$ echo "-1.00000 > 0" | bc
0

모양은 별로지만 아래와 같이 수정하면 동작할 것입니다.

#!/bin/csh
set file = `cat sign`
 
if ( `echo "${file} < 0" | bc` == 1 ) echo "minus"
if ( `echo "${file} > 0" | bc` == 0 ) echo "plus"
foruses의 이미지

도움 많이 되었습니다.