다음과 같이 BASH 이외의 스크립트 (PHP 스크립트)에서 여러 파이프 쉘 명령을 실행해야합니다.
command1 | command2 | command3
따라서 command10이 아닌 종료 코드로 실패하면 서로 명령이 실패합니다. 지금까지 내가 생각해 낸 것은 다음과 같습니다.
set -o pipefail && command1 | command2 | command3
그러나 터미널에서 제대로 실행되지만 스크립트에서 실행하면 다음과 같이 생성됩니다.
sh : 1 : 설정 : 잘못된 옵션 -o pipefail
/bin/sh set -o pipefail말합니다 . 내가 올바르게 테스트했으면 좋겠다. 시스템은 우분투 12입니다./bin/sh: 0: Can't open setsudo
/bin/sh -c "set -o pipefail"; 셸은 현재 디렉토리에서 스크립트를 실행하려고 set했으나 찾지 못했습니다.
/bin/sh -c "set -o pipefail"는 작동 bash -c "set -o pipefail"하지 않습니다.
/bin/sh인식하지 못하는 스크립트가 실행된다는 것 입니다 set -o pipefail. 결과적으로 스크립트 /bin/bash대신에 스크립트가 실행되도록해야합니다 /bin/sh. 또는 확신이 있다면 용감하고 어리석은 사람 은 현재 연결된 쉘 /bin/sh이나 사본 /bin/bash대신 링크 또는 사본으로 변경됩니다. 당신이 만약하고 있는지 확인 /bin/sh입니다 bash, 당신은 행동을 사용하고 bash로 실행할 때 노출하지 않습니다 /bin/sh; 사용 bash으로 bash.
/bin/sh좋아하지 않는다set -o pipefail. 실제로bash변장입니까, 아니면 다른 껍질입니까?bash로 실행 되면/bin/sh수락set -o pipefail합니까?