Linux 命令行入门教程
84. read 用户输入
本教程共 90 篇 · 第 84 篇
84. read 用户输入
脚本不一定全靠位置参数。想运行时现问用户要数据,用 read 命令。
基本用法
read 把用户敲的一行字读进变量:
#!/bin/bash
echo -n "请输入你的名字:"
read name
echo "你好,$name!"
echo -n 让提示和输入显示在同一行。也可以直接在 read 上用 -p 带提示,更简洁:
read -p "请输入你的名字:" name
echo "你好,$name!"
常用选项
-s 静默模式,输入不回显,适合输密码:
read -sp "请输入密码:" pwd
echo
echo "密码已记录(实际脚本请勿明文打印)"
-a 把输入按空格拆进数组:
read -a nums -p "输入几个数字:"
echo "第三个是:${nums[2]}"
-t 设置超时秒数,超过就不等了;-r 关闭反斜杠转义,读路径时建议加上,避免 \ 被吞掉。
不指定变量名
不写变量名时,输入存进默认变量 $REPLY:
read -p "说点什么:"
echo "你说了:$REPLY"
实战小例
一个带确认的交互脚本:
#!/bin/bash
read -p "要删除 /tmp/demo 吗?(y/n) " ans
if [ "$ans" = "y" ]; then
rm -rf /tmp/demo
echo "已删除"
else
echo "已取消"
fi
[ "$ans" = "y" ] 的比较写法下一章细讲。这里注意变量 "$ans" 加了引号,避免用户直接回车时空值导致语法报错。
Warning上面示例里
rm -rf会无条件删除目录且不可恢复。真实脚本中对这类危险操作务必二次确认,并校验路径,别让变量为空时误删根目录。
小结:read 让脚本能现场向用户要数据。-p 提示、-s 静默、-a 数组、-r 防转义,记住这几个就够日常用了。