成功せず、次を試しましたが、ドキュメントが見つかりませんでした。
read Option
case $Option in
[1] ) echo "1" ;;
[2] ) echo "2" ;;
[$'\n'] ) echo "LF" ;;
[0] ) exit ;;
* ) echo "Invalid input" ;;
esac
ただし、次の方法が機能します。
$ x="
> "
$ if [ "$x" = $'\n' ]; then echo "newline"; fi
newline
答え1
改行なしで入力の1行だけを読み取るので、空の文字列read
だけを確認したいと思います。
read Option
case $Option in
1 ) echo "1" ;;
2 ) echo "2" ;;
"" ) echo "LF" ;;
0 ) exit ;;
* ) echo "Invalid input" ;;
esac
[1]
(1
他の単一文字クラスと同様に)同じ文字列をパターンと一致させます。
答え2
read
はがします。ケースステートメント自体が有効です。
#read Option
Option='
'
case "$Option" in
[1] ) echo "1" ;;
[2] ) echo "2" ;;
[$'\n'] ) echo "LF" ;;
[0] ) exit ;;
* ) echo "Invalid input" ;;
esac
#Outputs: LF
答え3
case
外部プログラム(例:sed
。
以下の例では、すべてのスペースと印刷できない文字はスペースと同じように無効であるため、すべてリテラル ""に置き換えました。
case "${Option//[^[:print:]]/ }" in
*\ *)
# Handle error
;;
...
esac