如何捕获shell中的“Enter”?

时间:2015-11-06 07:14:18

标签: shell

以下脚本可以捕获4个箭头键:

#!/usr/bin/env bash
while true; do
    read -n 3 c  
    case "$c" in
      $'\033[A')
        printf "\t up \n"
        ;;        
      $'\033[B')      
        printf "\t down \n"
        ;;
      $'\033[D')     
        printf "\t left \n"
        ;;
      $'\033[C')    
        printf "\t right \n"
        ;;
      *)   
        if [[ $c == "" ]]
        then
            printf "\t enter \n"
        fi
        exit
        ;;
    esac
done

我从Input Translationn获得了箭头键的字符序列。

在脚本中, Enter 以不同的方式捕获。可以通过箭头键的类似方式捕获 Enter 吗?

补充

以下代码可以正常工作:

#!/usr/bin/env bash
while true; do
    read -n 1 c  
    case "$c" in
      $'\n')
        printf "\t enter \n"
        ;;        
      *)
        exit
        ;;
    esac
done

我找到了正确的方法:

#!/usr/bin/env bash
while true; do
    read -n 3 c  
    case "$c" in
      "")
        printf "\t enter \n"
        ;;        
      *)
        exit
        ;;
    esac
done

1 个答案:

答案 0 :(得分:0)

从上面的评论中,在case语句中,您需要测试双引号empty-string所代表的""。这将匹配某人输入任何内容,只需按 Enter 键即可。这是一个简短的例子:

#!/bin/bash

read -r ans

case "$ans" in 

    ""  )
        printf "[Enter] - empty string found\n";;
    *   ) 
        printf "missed enter.\n";;
esac

exit 0

使用/输出

$ bash readrtn.sh

[Enter] - empty string found

$ bash readrtn.sh
anything
missed enter.