
다음과 같은 bash 명령 목록이 포함된 파일이 있습니다.
echo 'foobar'
echo 'helloworld'
echo 'ok'
그리고 다음과 같이 간단히 파이프하여 이러한 명령을 실행할 수 있습니다 /bin/bash
.
cat commands | /bin/bash
이제 중간에 실행을 일시 중지하고 사용자 입력을 기다리려면 어떻게 해야 합니까? 사용하면 read
작동하지 않는 것 같습니다.
echo 'foobar'
echo 'helloworld'
read -p 'Press ENTER to continue'
echo 'ok'
답변1
다음과 같이 실행하세요:
/bin/bash commands
파일을 파이핑하면 bash
파일이 bash
. 이러한 경우 read
stdin에서 읽으면 터미널 대신 파이프된 스트림에서 읽습니다. 소비합니다 echo 'ok'
. 파일을 계속 실행하기 위한 인수로 지정하면 bash
이번에는 stdin이 리디렉션되지 않습니다.
나는 당신이 이렇게 실행하고 싶다고 가정합니다. 비교하다bash script.sh
이들달리다 그리고 의 차이점은 무엇인가요 ./script.sh
?