Shell:读取控制台输入
目录
在Shell脚本中,读取控制台(终端)的输入通常使用read
命令。read
命令从标准输入(通常是键盘)读取一行数据,并将其赋值给一个或多个变量。
基本语法
|
|
-
选项:
-
-p prompt
:指定读取值时的提示符; -
-t timeout
:指定读取值时等待的时间(秒),如果-t
不加表示一直等待。 -
-n num
:读取指定数量的字符,而不是整行。num
是你要读取的字符数。当读取到指定数量的字符后,read
命令会立即继续执行,不会等待用户按下回车键。 -
-d delim
:指定输入行的终结符,而不是换行符。delim
是自定义的终结符。
-
-
参数变量:指定读取值的变量名。
示例
|
|
运行这个脚本,它会首先显示“请输入你的名字:”,然后等待用户输入。用户输入名字后按回车键,脚本会继续执行,并显示“你好,<输入的名字>!”。
读取多个变量
read
命令也可以一次读取多个值,并将它们分别赋值给多个变量。值之间需要用空格分隔。
|
|
示例
|
|
读取带有提示的输入
虽然echo
命令经常用于在read
之前提供提示,但你也可以使用-p
选项直接在read
命令中提供提示信息。
|
|
读取直到遇到特定字符
默认情况下,read
命令读取一行数据,直到遇到换行符。但是,你可以使用-d
选项来指定一个不同的定界符。
|
|
这会使read
命令读取输入,直到遇到:
字符为止(包括:
字符本身也会被读取,除非与-n
选项结合使用)。
读取时限制字符数
使用-n
选项,你可以限制read
命令读取的字符数。这对于读取固定长度的输入特别有用。
|
|
这会读取最多4个字符的输入,但不会等待用户按下回车键。