関数の内部にある対話型プロンプトに対するメッセージとして関数のパイプ内容を使用したいと思います。私が試したことは次のとおりです。
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: ''