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个字符的输入,但不会等待用户按下回车键。