2014-07-18 5 views
2

쉘 스크립트에서이 코드를 이해하려고 노력하지만 여기서 논리를 이해할 수는 없습니다. 사람이 .. 날이 뒤에 논리를 이해하는 데 도움이논리 연산자는 어떻게 작동합니까?

((0 && 1)) **# Logical AND** echo $? # 1 *** 
# And so ... let "num = ((0 && 1))" echo $num # 0 
# But ... let "num = ((0 && 1))" echo $? # 1 *** 

((200 || 11)) **# Logical OR** 
echo $? # 0 *** 
# ... 
let "num = ((200 || 11))" 
echo $num # 1 
let "num = ((200 || 11))" 
echo $? # 0 *** 

질문 :

쉘이 실행에 1의 종료 상태를 반환 이유는 무엇
  1. ((0 & & 1))? let "num = ((0 & & 1))"실행시 " 의 종료 상태가 다른 이유는 무엇입니까? 어떤 0 && $any_number 작업이 항상 0이됩니다 그리고 그 것 1((...))의 상태를 존재하기 때문에

답변

0

((0 && 1))1의 존재 상태를 반환합니다.

그러나 당신은 사용하여 다른 쉘 변수에 ((0 && 1))의 값을 할당 할 때 할당이 성공하고 명령이 성공으로 간주되기 때문에

let "num = ((0 && 1))" 

다음 종료 상태가 0 될 것입니다.