Shell用户提示(Y / n)
我只是想为我的NAS复制一些文件来做一些小小的工作,所以我在Shell脚本方面并不是很有经验。 我知道Linux上的许多命令行工具在Yes / No输入中使用以下命令行工具
Are you yure [Y/n]
大写字母表示标准操作,该操作也将通过按Enter键开始。 这对于快速使用来说很不错。
我也想实现这样的事情,但是我在缓存Enter键时遇到了一些麻烦。 这是我到目前为止:
read -p "Are you sure? [Y/n] " response
    case $response in [yY][eE][sS]|[yY]|[jJ]|[#insert ENTER codition here#]) 
        echo
        echo files will be moved
        echo
        ;;
    *)
        echo
        echo canceld
        echo
        ;;
esac
我可以添加任何我想要的东西,但它不适用于Enter。
这是一个快速解决方案:
read -p "Are you sure? [Y/n] " response
case $response in [yY][eE][sS]|[yY]|[jJ]|'') 
    echo
    echo files will be moved
    echo
    ;;
    *)
    echo
    echo canceled
    echo
    ;;
esac
  如果你使用的是bash 4,你可以用默认的答案“响应预先”响应,这样你就不必显式地对待ENTER 。  (您也可以规范的情况下, response简化case声明。 
read -p "Are you sure? [Y/n] " -ei "y" response
response=${response,,}  # convert to lowercase
case $response in
    y|ye|yes)
      echo
      echo files will be moved
      echo
    ;;
    *)
      echo
      echo cancelled
      echo
      ;;
  你应该使用read -n1 
read -n1 -p "Are you sure? [Y/n] " response
case "$response" in 
   [yY]) echo "files will be moved";;
   ?) echo "canceled";;
esac
  根据help read : 
  -n nchars return after reading NCHARS characters rather than waiting
        for a newline, but honor a delimiter if fewer than NCHARS
        characters are read before the delimiter
