如何在case语句中捕获回车/换行

1.6*_*803 2 special-characters shell-script

我尝试了以下无济于事,也找不到任何文档。

read Option
case $Option in
    [1] ) echo "1" ;;
    [2] ) echo "2" ;;
    [$'\n'] ) echo "LF" ;;
    [0] ) exit ;;
    * ) echo "Invalid input" ;;
esac
Run Code Online (Sandbox Code Playgroud)

以下工作虽然。

$ x="                                         
> "
$ if [ "$x" = $'\n' ]; then echo "newline"; fi
newline
Run Code Online (Sandbox Code Playgroud)

che*_*ner 6

由于read只读取一行输入,无换行符,您只想检查空字符串:

read Option
case $Option in
    1 ) echo "1" ;;
    2 ) echo "2" ;;
    "" ) echo "LF" ;;
    0 ) exit ;;
    * ) echo "Invalid input" ;;
esac
Run Code Online (Sandbox Code Playgroud)

[1]and 1(对于其他单字符类也类似)匹配与模式相同的字符串。