该脚本中的“read -n1 -s”是什么意思?

该脚本中的“read -n1 -s”是什么意思?

今天我学习了一些有关命令行中菜单选项的技巧。其中之一是

cat << EOF
    Some lines
EOF
read -n1 -s
case $newvar in
   "1") echo "";
ecsa 

真的很神奇。我在手册页中找不到有关此选项的任何描述。如何输入到命令被推入案件选项 ?据我所知,它通常使用变量来完成此操作。

我只是想进一步了解这个组合的过程。

while :
do
    clear
    cat<<EOF
    ==============================
    Menu Install DHCP Tool
    ------------------------------
    Please enter your choice:

    (1) Config Network Interface
    (2) Check status
    (3) Config DHCP server
    (Q)uit
    ------------------------------
EOF
read -n1 -s
    case "$REPLY" in
    "1")  config_network ;;
    "2")  check_status ;;
    "3")  config_dhcp ;;
    "q")  exit                      ;;
     * )  echo "invalid option"     ;;
    esac
    sleep 0.2
done

答案1

的文档read指出:

如果未提供名称,则将读取的行分配给变量REPLY

从那时起,这是一个正常的case声明。-n1读取单个字节并-s关闭输入的终端回显。

答案2

您在简短描述中使用的变量$newvar不存在。

它必须是$REPLY,正如您在完整命令中实际使用的那样。

-n1 -s这个问题与您询问的阅读选项无关。

相关内容