bash 脚本实现提示确认:任意键继续、输入Y/N继续
- Bash
- 2020-03-04
- 356热度
- 0评论
导航
0 场景描述
你写了一个脚本,其中作了一些假设,需要提示给用户,让用户确认。这时,就需要写一个“提示确认”功能。
有两种常见的交互方式:(1)按任意键继续;(2)输入特定字符后继续(一般是 Y/N)。
这里把两种方式的 demo 代码都贴出来。
1 任意键继续
#!/bin/bash echo " 开始执行操作. ... " get_char() { SAVEDSTTY=`stty -g` stty -echo stty cbreak dd if=/dev/tty bs=1 count=1 2> /dev/null stty -raw stty echo stty $SAVEDSTTY } echo "Press any key to continue..." echo " CTRL+C break command bash ..." # 组合键 CTRL+C 终止命令! char=`get_char` echo " 操作完成 .... "
2 输入 Y/N 继续
这里又分两种情况:(1)只接收一次输入,不论是什么字符,立即退出(2)循环接收输入,直到用户输入 Y(Yes) 或 N(No)。
2.1 一次输入
#!/bin/bash read -r -p "Are You Sure? [Y/n] " input case $input in [yY][eE][sS]|[yY]) echo "Yes" ;; [nN][oO]|[nN]) echo "No" ;; *) echo "Invalid input..." exit 1 ;; esac
2.2 循环输入
#!/bin/bash while true do read -r -p "Are You Sure? [Y/n] " input case $input in [yY][eE][sS]|[yY]) echo "Yes" break ;; [nN][oO]|[nN]) echo "No" break ;; *) echo "Invalid input..." ;; esac done