나는 왜“| makefile의 true”는“|| 진실” || true싶지만을 놓쳤다 |.

파일을 제거하기 전에 서비스를 중지하는 makefile이 있습니다. 서비스를 중지 할 수 없으면 오류가 발생합니다. 이것은 분명히 원치 않는 것이므로 추가하고 || true싶지만을 놓쳤다 |. 그것을 만들기:

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

왜 이것이 작동하고 있으며 무슨 일이 일어나고 있는지 혼란 스럽습니다. 이것이 true키워드가 아니라 응용 프로그램 임을 의미합니까 ? 그들은 같은가요? 사용해야 할 좋은 이유가 | true있습니까?



답변

true하고 false있습니다 로 coreutils는 (일반적 내장 인 쉘) 당신이 그 동작을 필요로하는 일이 상황에, 0이 아닌 0을 반환하는. 매뉴얼 페이지에서 :

참-아무 것도, 성공적으로
거짓-아무 것도, 실패

따라서 출력을에서 stop service foo로 파이핑하는 중입니다.이 출력은 true무시하고 0을 반환합니다. 기술적으로 작동하지만 || true의도 한 바를 분명히 사용해야 합니다. 출력을 사용하지 않는 프로그램으로 출력을 파이프 할 이유가 없습니다.


답변