shell脚本之输入交互read
2017-03-18 14:36
447 查看
read - 从标准输入读取数值
这个 read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用 重定向的时候,读取文件中的一行数据。这个命令有以下语法形式:read [-options] [variable...]
这里的 options 是下面列出的可用选项中的一个或多个,且 variable 是用来存储输入数值的一个或多个变量名。
如果没有提供变量名,shell 变量 REPLY 会包含数据行。
基本上,read 会把来自标准输入的字段赋值给具体的变量。如果我们修改我们的整数求值脚本,让其使用 read ,它可能看起来像这样:
#!/bin/bash # read-integer: evaluate the value of an integer. echo -n "Please enter an integer -> " read int if [[ "$int" =~ ^-?[0-9]+$ ]]; then if [ $int -eq 0 ]; then echo "$int is zero." else if [ $int -lt 0 ]; then f0bb echo "$int is negative." else echo "$int is positive." fi if [ $((int % 2)) -eq 0 ]; then echo "$int is even." else echo "$int is odd." fi fi else echo "Input value is not an integer." >&2 exit 1 fi
我们使用带有 -n 选项(其会删除输出结果末尾的换行符)的 echo 命令,来显示提示信息, 然后使用 read 来读入变量 int
的数值。运行这个脚本得到以下输出:
[me@linuxbox ~]$ read-integer Please enter an integer -> 5 5 is positive. 5 is odd.
read 可以给多个变量赋值,正如下面脚本中所示:
#!/bin/bash # read-multiple: read multiple values from keyboard echo -n "Enter one or more values > " read var1 var2 var3 var4 var5 echo "var1 = '$var1'" echo "var2 = '$var2'" echo "var3 = '$var3'" echo "var4 = '$var4'" echo "var5 = '$var5'"
在这个脚本中,我们给五个变量赋值并显示其结果。注意当给定不同个数的数值后,read 怎样操作:
[me@linuxbox ~]$ read-multiple Enter one or more values > a b c d e var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'e' [me@linuxbox ~]$ read-multiple Enter one or more values > a var1 = 'a' var2 = '' var3 = '' var4 = '' var5 = '' [me@linuxbox ~]$ read-multiple Enter one or more values > a b c d e f g var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'e f g'
如果 read 命令接受到变量值数目少于期望的数字,那么额外的变量值为空,而多余的输入数据则会 被包含到最后一个变量中。如果 read 命令之后没有列出变量名,则一个 shell 变量,REPLY,将会包含 所有的输入:
#!/bin/bash # read-single: read multiple values into default variable echo -n "Enter one or more values > " read echo "REPLY = '$REPLY'"
这个脚本的输出结果是:
[me@linuxbox ~]$ read-single Enter one or more values > a b c d REPLY = 'a b c d'
使用各种各样的选项,我们能用 read 完成有趣的事情。例如,通过-p 选项,我们能够提供提示信息:
#!/bin/bash # read-single: read multiple values into default variable read -p "Enter one or more values > " echo "REPLY = '$REPLY'"
相关文章推荐
- Shell脚本交互之:自动输入密码
- shell中的read命令,用户输入交互
- shell脚本之通过发送带\n字符串或expect脚本实现交互输入自动化
- Shell脚本交互之:自动输入密码【转】
- shell基础:使用read、命令行脚本传参实现输入2个整数并计算
- Shell编程中的用户输入处理(4):在shell脚本中,使用read命令获取命令行输入
- Shell while read命令完成用户的交互输入
- shell脚本read -t 超时输入测试
- Shell脚本交互之:自动输入密码
- shell脚本读取用户输入并与之交互
- Linux-----Shell脚本交互实现自动输入密码
- shell脚本判断输入参数个数
- shell中交互输入自动化
- linux下shell脚本read操作
- shell 利用read与键盘进行交互, 来取得变量的值
- shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)
- linux shell 脚本重定输入输出
- 在shell脚本中用expect 实现 scp 文件的时候不手动输入密码
- Linux下脚本实现交互输入
- shell脚本实现无密码交互的SSH自动登陆