`... bash` 모범 사례에서 스크립트 상호 작용을 다시 얻는 방법은 무엇입니까?

`... bash` 모범 사례에서 스크립트 상호 작용을 다시 얻는 방법은 무엇입니까?

다음과 같은 간단한 스크립트가 있다고 가정해 보겠습니다 question.

#!/bin/bash

read -rp "What's your name?" ans

echo "Your name is $ans"

cat우리의 예를 사용해보자

cat question | bash

우리는 스크립트 파일의 내용을 Bash의 표준 입력에 제공하고 이를 명령으로 실행합니다. 실행되면 bash의 표준 입력이 사용되므로 파이프 앞에 배치되지 않는 한 파이프 외부의 어떤 것도 표준 입력에 입력될 수 없습니다.

이를 완화하기 위한 한 가지 옵션은 스크립트 파일의 내용을 다운로드하여 먼저 셸에 전달한 다음 실행하는 것입니다.

bash -c "$(cat ./question)"

내가 찾은 구문에 대한 또 다른 옵션 ... | bash은 스크립트에서 현재 프로세스를 다음과 같이 표준 입력이 터미널에서 하위 쉘로 래핑되어 리디렉션되는 새 프로세스로 바꾸면 작동한다는 것입니다.

#!/bin/bash

(
 exec < /dev/tty

 read -rp "What's your name?" ans

 echo "Your name is $ans"
)

다른 옵션이 무엇인지, 모범 사례가 무엇인지 알고 싶습니다.

관련 정보