함수 내부에 있는 대화형 프롬프트에 대한 메시지로 함수의 파이프 내용을 사용하고 싶습니다. 내가 시도한 것은 다음과 같습니다.
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: ''