Как поймать возврат каретки / строку в заявлении case

Я пробовал следующее безрезультатно и не мог найти никакой документации.

read Option case $Option in [1] ) echo "1" ;; [2] ) echo "2" ;; [$'\n'] ) echo "LF" ;; [0] ) exit ;; * ) echo "Invalid input" ;; esac 

Тем не менее, работает.

  • В чем разница между «расширением» и «замещением» в терминах терминологии оболочки?
  • Разделить входной файл на X частей общего количества строк / X
  • Почему я не могу применить этот скрипт к файлам не в моем текущем каталоге?
  • Удалить все скобки в имени файла
  • Как использовать переменные в команде sed
  • Удалить первую строку файла
  •  $ x=" > " $ if [ "$x" = $'\n' ]; then echo "newline"; fi newline 

  • Есть ли способ, которым я могу поместить это в свой ~ / .bashrc как функцию?
  • Сравнение файлов с vimdiff из скрипта
  • Все файлы не загружаются скриптом SFTP
  • Как прочитать файл свойств в ассоциативный массив?
  • Как проверить, присутствует ли файл, начинающийся с определенного префикса, в каталоге в сценарии оболочки
  • Отображение переноса wget более компактным способом (при сохранении функциональности обнаружения ошибок)
  • 2 Solutions collect form web for “Как поймать возврат каретки / строку в заявлении case”

    Поскольку read только считывает одну строку ввода, sans newline, вы просто хотите проверить пустую строку:

     read Option case $Option in 1 ) echo "1" ;; 2 ) echo "2" ;; "" ) echo "LF" ;; 0 ) exit ;; * ) echo "Invalid input" ;; esac 

    [1] и 1 (и аналогично для других односимвольных классов) соответствуют тем же строкам, что и шаблоны.

    read разделит его. Сам пример дела работает.

     #read Option Option=' ' case "$Option" in [1] ) echo "1" ;; [2] ) echo "2" ;; [$'\n'] ) echo "LF" ;; [0] ) exit ;; * ) echo "Invalid input" ;; esac #Outputs: LF 
    Linux и Unix - лучшая ОС в мире.