2013-11-25 3 views
0

퍼센트 변경이> 0, == 0, < 0 및 NULL인지 확인해야합니다. 내가 수동으로 $count 즉 가치를 할당하면값을 수동으로 할당하지 않으면 부동 소수점 값이 작동하지 않음

get_count() { 
    sqlplus -s un/pass <<! 
    set heading off 
    set feedback off 
    set pages 0 
    select trunc(PRNCT_CHANGE, 3) 
    FROM SEMANTIC.COUNT_STATISTICS; 
    exit; 
! 
} 

count=$(get_count $1) #possible values: -0.789, -10.999, 11.897, 20, 1, 0... 

if [ -z "$count" ]; then 
    echo "The count percentage change returns null value" 
elif [[ "$count" -gt 0 ]]; then 
    echo "The count percentage change ($count) is greater than zero" 
elif [[ "$count" == 0 ]]; then 
    echo "The count percentage change stays unchanged (is zero)" 
elif [[ "$count" =~ ^[\-0-9] ]]; then 
    echo "The count percentage change is $count" 
else 
    echo "$count ... Something else is wrong here" 
fi 

: 이것은 큰 노력

count=-0.987 

그래서 내가 SELECT 문의 결과를 반환 get_count()를 ... 얻었다. 내가 get_count() 메소드는 값을 반환 할 경우

그렇지 않으면, 그것은 항상

은 어떻게 든 $count 변수에 전달되는 값을 변환해야 ... else 문으로 점프 ..?

+0

당신의'get_count' 실제로 전달 된 인수를 사용하지 않는 : 당신은 비교를 할 bc 같은 외부 프로그램을 사용해야합니다. – chepner

+0

그래 ... 나는 값을 얻는다. 그것은 울려 퍼지기 때문에 : "-71.888 ... 다른 뭔가가 잘못되었습니다." – Angelina

+0

그게 무슨 뜻입니까? @chepner – Angelina

답변

1

bash 부동 소수점 값을 인식하지 못합니다.

if [ -z "$count" ]; then 
    echo "The count percentage change returns null value" 
elif [[ $(echo "$count > 0" | bc) -eq 1 ]]; then 
    echo "The count percentage change ($count) is greater than zero" 
elif [[ $(echo "$count < 0" | bc) -eq 1 ]]; then 
    echo "The count percentage change ($count) is less than zero" 
elif [[ "$count" == 0 ]]; then 
    echo "The count percentage change stays unchanged (is zero)" 
else 
    echo "$count ... Something else is wrong here" 
fi