首页 / Linux 命令行入门教程 / 84. read 用户输入

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 防转义,记住这几个就够日常用了。