read命令

read是Linux/Unixshell的内置命令,用于从标准输入读取数据。它可以读取键盘输入或文件内容,支持多种选项如-p提示信息,-n限制输入字符数,-t设置超时等。read命令还能处理数组变量和使用命令补全功能。
摘要由CSDN通过智能技术生成

read是一条shell内置命令。

read 从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。


一、语法格式

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

二、选项

-a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。
-d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。
-p 后面跟提示信息,即在输入前打印提示信息。
-e 在输入的时候可以使用命令补全功能。
-n 后跟一个数字,定义输入文本的长度,很实用。
-r 屏蔽,如果没有该选项,则作为一个转义字符,有的话 就是个正常的字符了。
-s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。
-t 后面跟秒数,定义输入字符的等待时间。
-u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。

三、实例


1.简单读取

(1)读入一个变量

#!/bin/bash
echo "输入网站名:"
read website
echo "你输入的网站名是 $website"
exit 0

测试结果为:
输入网站名:
www.runoob.com
你输入的网站名是 www.runoob.com



(2)读入多个变量

#!/bin/bash
echo "输入网站名:"
read website1 website2
echo "你输入的网站名是 $website2 $website1"
exit 0

执行结果
输入网站名:
www com
你输入的网站名是 com www



(3)不指定变量

read 命令中不指定变量,那么read命名将它收到的任何数据都放在特殊环境变量REPLY中

read -p "Enter a number: "

echo "$REPLY"


2.-p指定一个提示。

#!/bin/bash
read -p "输入网站名:" website
echo "你输入的网站名是 $website"
exit 0

测试结果为:
输入网站名:www.runoob.com
你输入的网站名是 www.runoob.com



3.-t 指定等待输入的秒数

当计时满时,read命令返回一个非零退出状态。

#!/bin/bash
if read -t 5 -p "输入网站名:" website; then
     echo "你输入的网站名是 $website"
else
     echo "\n抱歉,你输入超时了。"
fi
exit 0

执行程序不输入,等待 5 秒后:
输入网站名:
抱歉,你输入超时了



4.-n 设置输入的字符数。

 当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。

#!/bin/bash
read -n1 -p "Do you want to continue [Y/N]?" answer
case $answer in
     Y | y)
         echo -e "\nfine ,continue";;
     N | n)
         echo -e "\nok,good bye";;
     *)
         echo -e "\nerror choice";;
esac
exit 0



该例子使用了-n 选项,后接数值 1,指示 read 命令只要接受到一个字符就退出。只要按下一个字符进行回答,read 命令立即接受输入并将其传给变量,无需按回车键。


只接收 2 个输入就退出:

#!/bin/bash
read -n2 -p "请随便输入两个字符: " any
echo -e "\n您输入的两个字符是:$any"
exit 0

执行程序输入两个字符:
请随便输入两个字符: 12
您输入的两个字符是:12



5.-s 使输入的数据不显示在命令终端上

 输入密码常用这个选项。

#!/bin/bash
read -s -p "请输入您的密码:" pass
echo -e "\n您输入的密码是 $pass"
exit 0

执行程序输入密码后是不显示的:
请输入您的密码:
您输入的密码是 runoob



6.读取文件


每次调用 read 命令都会读取文件中的 "一行" 文本。当文件没有可读的行时,read 命令将以非零状态退出。
通过什么样的方法将文件中的数据传给 read 呢?使用 cat 命令并通过管道将结果直接传送给包含 read 命令的 while 命令。

测试文件 test.txt 内容如下:
123
456
runoob



测试代码:
#!/bin/bash
count=1
cat test.txt | while read line; do
     echo "Line $count:$line"
     ((count+=1))
     done
     echo "finish"
exit 0

执行结果为:
Line 1:123
Line 2:456
Line 3:runoob
finish



7.-e 在输入的时候可以使用命令补全功能

以下实例输入字符 a 后按下 Tab 键就会显示相关的文件名 

$ read -e -p "输入文件名:" str
输入文件名:a     #按下 Tab 键
a.out a.py a.pyc abc.txt
输入文件名:a

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: read命令是在Linux/Unix shell脚本中常用的命令之一,它可以读取键盘输入并将其存储在变量中。语法格式如下: read variable 在脚本运行时,read命令会暂停执行,等待用户输入,然后将用户输入的值存储在指定的变量中。例如: read name echo "Hello $name" 这段脚本会先询问用户输入名字,然后输出"Hello [用户输入的名字]" ### 回答2: read命令是在shell脚本中用于从用户输入读取数据的命令。它允许脚本暂停执行,等待用户输入,并将输入的内容赋值给变量。 使用read命令时,可以指定一个或多个变量作为参数,并用空格分隔。当脚本执行到read命令时,它将暂停执行,直到用户在终端中输入数据并按下回车键。输入的内容将被赋值给指定的变量。 例如,以下是一个简单的shell脚本示例: ```shell #!/bin/bash echo "请输入您的名字:" read name echo "您好,$name!欢迎使用该脚本。" ``` 在这个例子中,脚本会先输出提示信息"请输入您的名字:",然后执行read命令等待用户输入。用户输入后,脚本会将输入的内容赋值给变量name,并在下一行输出"您好,$name!欢迎使用该脚本。" read命令还可以用于读取多个变量。可以通过空格将多个变量名分隔开: ```shell #!/bin/bash echo "请输入您的名字和年龄:" read name age echo "您好,$name!您的年龄是$age岁。" ``` 在这个例子中,脚本会等待用户输入两个值,分别赋值给name和age变量,并输出"您好,$name!您的年龄是$age岁。" 总之,read命令是一个非常有用的shell脚本命令,用于在脚本中接收用户输入,并将输入的内容赋值给变量,以便后续处理。 ### 回答3: shell脚本中的read命令用于从标准输入读取用户输入,并将其存储到一个变量中。 read命令的基本语法为: read 变量名 当执行到read命令时,脚本会暂停运行,等待用户输入。用户输入后,按下回车键,输入的内容就会被存储到指定的变量中。 可以通过以下示例来进一步说明read命令的使用: #!/bin/bash echo "请输入您的名字:" read name echo "您好,$name!欢迎使用我们的脚本。" 在上述示例中,脚本会先输出提示信息"请输入您的名字:",然后等待用户输入。用户输入后,脚本将其存储到$name变量中,并通过echo命令输出"您好,$name!欢迎使用我们的脚本。" read命令还可以进行一些额外的设置,例如指定超时时间,设置提示符等。可以使用read的各种选项来实现这些功能。 总结来说,Shell脚本中的read命令用于从标准输入读取用户输入,并将其存储到一个变量中。它在用户交互、获取输入以及自动化脚本编写中起到了重要的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值