파이프 함수에서 사용자 입력 읽기

파이프 함수에서 사용자 입력 읽기

함수 내부에 있는 대화형 프롬프트에 대한 메시지로 함수의 파이프 내용을 사용하고 싶습니다. 내가 시도한 것은 다음과 같습니다.

myfunc ()
{
  local input output
  output=$(cat /dev/stdin)
  
  echo "output: '$output'" >&2
  
  exec 3<&0
  read -u 3 -e -i "$1" -p "Your choice? " input
  exec 3>&-
  echo "input: '$input'" >&2
}

처음에는 변수에 파이프된 표준 입력을 수집하면 가능할 것이라고 생각했지만 read작동하지 않는 것 같습니다. 그래서 다른 파일 설명자에서 읽으려고 시도했지만 여전히 원하는 대로 작동하지 않았습니다.

output=$(cat /dev/stdin)계속하기 전에 모든 표준 입력을 얻어야 하지 않습니까 read? 내 요청이 실현 가능합니까? 그렇다면 내가 무엇을 놓치고 있습니까?

이것이 내가 만들고자 하는 결과입니다:

$ echo "1 or 2?" | myfunc 
output: '1 or 2?'
Your choice? 1 or 2
# Edit between 1 and 2
input: '1'

일어나는 일은 다음과 같습니다.

$ echo "1 or 2?" | myfunc 
output: '1 or 2?'
input: ''

관련 정보