메이크파일의 "| true"가 "|| true"와 동일한 효과를 갖는 이유가 무엇인지 혼란스럽습니다.

메이크파일의 "| true"가 "|| true"와 동일한 효과를 갖는 이유가 무엇인지 혼란스럽습니다.

파일을 삭제하기 전에 서비스를 중지하는 makefile이 있습니다. 서비스 중지에 실패하면 오류와 함께 중단됩니다. 이것은 분명히 필요하지 않기 때문에 추가하고 싶었지만 || true놓쳤습니다 |. 진행 중인 작업:

stop service foo | true
rm /etc/init/foo.conf

왜 이것이 작동하고 무슨 일이 일어나고 있는지 혼란 스럽습니다. 이것이 true단순한 키워드가 아니라 애플리케이션이라는 뜻인가요? 그들은 동일합니까? 그것을 사용하는 좋은 이유가 있습니까 | true?

답변1

true그리고 false핵심 도구(일반적으로 쉘 내장)은 0과 0이 아닌 값만 반환하므로 해당 동작이 필요한 상황에 적합합니다. 매뉴얼 페이지에서:

true - 아무것도 하지 않음, 성공
false - 아무것도 하지 않음, 실패

따라서 출력을 파이프 stop service foo로 연결 true하면 이를 무시하고 0을 반환합니다. 기술적으로는 작동하지만 || true의도가 무엇인지 분명하게 알 수 있도록 이를 사용해야 하며 이를 사용하지 않는 프로그램에 출력을 파이프할 이유가 없습니다.

관련 정보