read
何らかの形で末尾の記号を変数\n
に入れることはできません。いずれにせよ、他の文字がない場合は、1文字だけをエコーして空白行が発生するのをREPLY
防ぎたいと思います。\n
一方:read
echo
declare -l REPLY
read >&2 -r -N 1 -p "Acknowledged? (y):" REPLY
if [[ "$REPLY" != $'\n' ]]; then
echo >&2
fi
私にとって考えられる解決策は、入力をread
抑制することでした。-s
ただし、理想的には、ユーザーがプロンプトの後に入力した単一文字を表示できるはずです。
また、変数に文字を入れることもIFS= read -d''
できません\n
。
どんなアイデアがありますか?
ベストアンサー1
FWIW、あなたのコードは私にとって効果的です。
$ echo | bash -c 'read -rN1; echo "$BASH_VERSION <$REPLY>"'
4.2.36(1)-release <
>
有効にすると-N
設定は不要になり、IFS
NLは最終的に$ REPLYに表示されます。 NULL は$REPLY
単に NUL( <Ctrl-Space>
)、EOF、またはエラーを意味します(どちらの場合も、終了ステータスはゼロではありません)。