그래서 여기에 내가 작업하고있는 재미있는 코드 스 니펫이 나와 있으며, 내 인생에서 내가 뭘 잘못하고 있는지 알 수 없습니다.과도하게 복잡한 조건부 운영 질문
(chomp($CMD=`whereis blah | awk '{print \$2}'`) ||
chomp($CMD=`whereis cat | awk '{print \$2}'`)) ?
(print "$CMD\n") : (print "Neither command exists.");
print "$CMD\n";
실행하면 빈 문자열이 항상 출력됩니다. 내가 알 수있는 한 $ CMD에 대한 두 번째 할당은 절대로 실행되지 않습니다. 순전히 데모 목적으로 "ㅋ"및 "고양이"를 포함 시켰습니다. 이상적으로는 주어진 시스템에 설치되어 있거나 설치되어 있지 않은 두 개의 명령을 검사 할 것입니다. 이 때문에 두 조건부를 조건부에 중첩시켜야합니다. 이들 중 어느 것도 발견되지 않으면 (따라서 두 개의 빈 문자열) 거짓 절을 실행하고 싶습니다. 그러나 명령 중 하나 또는 다른 명령이 존재하면 $ CMD에 할당하고 true 절을 실행합니다 (위 예제에서 $ CMD를 인쇄하는 것). 나는 다양한 조합으로 연주했지만이 작품을 만들 수 없습니다.
동일한 결과를 얻으려면 몇 가지 간단한 문구를 통해이 구문을 분석 할 수 있지만 호기심/완고함이 내게 좋으며 나는 위의 이유가 작동하지 않는 이유를 알고 싶습니다. 당신이 제공 할 수있는 도움은 매우 감사 할 것입니다.
대신 빈 상태에서 조건부 연산자를 사용하는 것을 싫어합니다. 또는 awk에게 뭔가를 해달라고 부탁하십시오. – tchrist