파이프 사용 방법(cmd 연결) [닫기]

파이프 사용 방법(cmd 연결) [닫기]

루트 모드에서 "|" 명령을 실행할 때 문제가 발생했습니다. 명령은 다음과 같습니다.

cat xyz.sh | chmod 744 xyz.sh | echo "hello" > xyz.sh

다음을 사용하여 이 명령을 실행할 때./xyz.sh,에러 발생됨

./xyz.sh: line 1: hello: command not found

저를 지정해주세요. 내가 뭔가 잘못했다면 어쩌지!

답변1

먼저, 이해해야 합니다.파이프라인이 뭐야?:

파이프라인은 제어 연산자로 구분된 하나 이상의 명령 시퀀스입니다 |. 마지막 명령을 제외한 각 명령에 대해 쉘은 명령의 표준 출력을 다음 명령의 표준 입력에 연결해야 합니다.

파이프라인에서는 다음과 같은 일이 발생합니다.

  1. cat내용을 xyz.sh다음 명령의 표준 입력으로 보냅니다.
  2. chmod해당 데이터를 수신하지만 내가 아는 한 해당 데이터로 아무 작업도 수행하지 않습니다. 대신, 다음 명령의 권한을 변경 xyz.sh하고 표준 입력으로 아무것도 보내지 않습니다.
  3. echoecho아무것도 수신되지 않지만 표준 입력은 처음부터 읽히지 않으므로 중요하지 않습니다 . ~처럼강철 드라이버echo내용을 단어로 덮어 보세요 .xyz.shhello

그런 다음 를 실행하려고 하면 xyz.sh쉘이 찾은 유일한 명령문은 명령으로 실행을 hello시도합니다 . 설치된 명령이 hello없으므로 오류가 발생합니다.hellocommand not found

관련 정보