06 SHELL脚本编程基础-Read-20210404 (六)
使用 read 命令来接受输入
使用read来把输入值分配给一个或多个shell变量,read从标准输入中读取值,给每个单词分配一个变 量,所有剩余单词都被分配给后一个变量,如果变量名没有指定,默认标准输入的值赋值给系统内置 变量REPLY
格式:read [options] [name ...]
常见选项:
-p 指定要显示的提示 -s 静默输入,一般用于密码 -n N 指定输入的字符长度N -d '字符' 输入结束符 -t N TIMEOUT为N秒
范例:
yesorno脚本,一开始是这样的,比较简单,只能输入完整的YES,或者No
优化一下脚本
用正则表达式来写脚本,answer是个变量名!
此处需要使用双花括号[[ ]],只有双花括号支持正则表达式
初步改了一下来执行看看效果
继续改,加入|^$,^开头,$结尾
注:[^] 匹配指定范围外的任意单个字符,示例:[^wang]
^ 行首锚定,用于模式的左侧
$ 行尾锚定,用于模式的右侧
继续改,主要观变化,加入[ ],变成了|^[ ]$
继续改,[[ $answer =~ ^[Yy]$|^[Yy][Ee][Ss]$ ]]并验证OK
全部改完验证,也OK
[[ $answer =~ ^[Nn]$|^[Nn][Oo]$ ]]
同时验证一下输错的结果,也OK
完整的就是这样
这个脚本还可以再优化一下,更精简了,更好看了
验证修改精简后的脚本,成功: