2013-05-20 8 views
1

그래서 내가 bash에서 코딩 몇 가지를 테스트하려고합니다. n00b로서 기본에 대해 몇 가지 문제를 겪고 있으며, 쉘을 사용하여 수치를 다루는 것이 얼마나 자극적인지 알 수 있습니다.은 숫자 값과 비교됩니다. 유닉스

if $((echo $?)) > 0 ;then 
    echo "there is an error"; 
else 
    echo "it passed"; 
fi 

I 얻을 오류 : 떠들썩한 파티 : 떠들썩한 파티 : 0 에코 : I는 에코 않고 시도 I 얻을

표현 구문 오류 (에러 토큰이 "0") ./0 : 허가가 거부되었습니다

그래서 저는 쉘이 무엇을하려고하는지 혼란 스럽습니다.

감사를 두 번 괄호 안의

+0

가능하면, 심지어 $'신경 쓰지 않는다'?. 'cmd '가'$?'의 값을 설정하는 명령어라면,'if cmd; 그런 다음 "통과했습니다"; else echo "오류가 있습니다"; fi' – chepner

답변

2

전체 산술 평가해야합니다 :

if (($? > 0)) ;then 
    echo "there is an error"; 
else 
    echo "it passed"; 
fi 
+0

굉장한 감사합니다! $ (($?> 0))이 아닌 (($?> 0)) 대신에 정말 감사 할 것입니다. 언제 $ 표시가 필요합니까? 예를 들어, 디렉토리의 파일 수의 1/3을 보려면 echo $ (($ (ls | wc -l)/3)이 필요합니다. 응답을 다시 한 번 감사드립니다. – yatici

+0

'$ ((expression))'은 _arithmetic expansion_에 대한 구문으로, _arithmetic_ evaluation_이 아니기 때문에 위의 스 니펫 에서처럼 if 명령에 사용할 수 있습니다. – Chewie

0

이 시도가 :

OUT=$? 
if [ $OUT -eq 0 ];then 
    echo "OK!" 
else 
    echo "NOT OK!" 
fi 
관련 문제