Shell:读取控制台输入

在Shell脚本中,读取控制台(终端)的输入通常使用read命令。read命令从标准输入(通常是键盘)读取一行数据,并将其赋值给一个或多个变量。

基本语法

1
read (选项) (参数)
  1. 选项:

    • -p prompt:指定读取值时的提示符;

    • -t timeout :指定读取值时等待的时间(秒),如果-t不加表示一直等待。

    • -n num:读取指定数量的字符,而不是整行。num是你要读取的字符数。当读取到指定数量的字符后,read命令会立即继续执行,不会等待用户按下回车键。

    • -d delim:指定输入行的终结符,而不是换行符。delim是自定义的终结符。

  2. 参数变量:指定读取值的变量名。

示例

1
2
3
4
5
#!/bin/bash  
  
echo "请输入你的名字:"  
read name  
echo "你好,$name!"

运行这个脚本,它会首先显示“请输入你的名字:”,然后等待用户输入。用户输入名字后按回车键,脚本会继续执行,并显示“你好,<输入的名字>!”。

读取多个变量

read命令也可以一次读取多个值,并将它们分别赋值给多个变量。值之间需要用空格分隔。

1
read var1 var2 var3

示例

1
2
3
4
5
#!/bin/bash  
  
echo "请输入三个数字,用空格分隔:"  
read num1 num2 num3  
echo "你输入的数字是:$num1, $num2, $num3"

读取带有提示的输入

虽然echo命令经常用于在read之前提供提示,但你也可以使用-p选项直接在read命令中提供提示信息。

1
read -p "请输入你的名字:" name

读取直到遇到特定字符

默认情况下,read命令读取一行数据,直到遇到换行符。但是,你可以使用-d选项来指定一个不同的定界符。

1
read -d ':' var

这会使read命令读取输入,直到遇到:字符为止(包括:字符本身也会被读取,除非与-n选项结合使用)。

读取时限制字符数

使用-n选项,你可以限制read命令读取的字符数。这对于读取固定长度的输入特别有用。

1
read -n 4 var

这会读取最多4个字符的输入,但不会等待用户按下回车键。

0%