首页 > 学院 > 开发设计 > 正文

Linux系统中read 命令的使用

2019-11-11 07:23:05
字体:
来源:转载
供稿:网友

read命令接受用户输入,并将输入放入一个标准变量中。

基本用法如下:

$ cat test.sh#!/bin/bashecho -n "Enter you name: "read nameecho "Hello,$name!"$ ./test.shEnter you name: worldHello,world!这个例子中,我们首先输出一句提示,然后利用read将用户输入读取到name变量。使用-p选项,我们可以直接指定一个提示:
$ cat test.sh#!/bin/bashread -p "Enter you name:" nameecho "Hello,$name!"$ ./test.shEnter you name:worldHello,world!read命令也可以同时将用户输入读入多个变量,变量之间用空格隔开。
$ cat test.sh#!/bin/bashread -p "Enter your name and age:" name ageecho "Hello,$name,your age is $age!"$ ./test.shEnter your name and age:tom 12Hello,tom,your age is 12!$ ./test.shEnter your name and age:tom 12 34Hello,tom,your age is 12 34!$ ./test.shEnter your name and age:tomHello,tom,your age is !在本例中,read命令一次读入两个变量的值,可以看出:如果用户输入大于两个,则剩余的数据都将被赋值给第二个变量。如果输入小于两个,第二个变量的值为空。如果在使用read时没有指定变量,则read命令会将接收到的数据放置在环境变量REPLY中:
$ cat test.sh#!/bin/bashecho "/$REPLY=$REPLY"read -p "Enter one  number:"echo "/$REPLY=$REPLY"$ ./test.sh$REPLY=Enter one  number:12$REPLY=12默认情况下read命令会一直等待用户输入,使用-t选项可以指定一个计时器,-t选项后跟等待输入的秒数,当计数器停止时,read命令返回一个非0退出状态。
$ cat test.sh#!/bin/bashif read -t 5 -p "Enter your name:" namethen     echo "Hello $name!"else    echo      echo "timeout!" fi$ ./test.sh Enter your name:worldHello world!$ ./test.sh Enter your name:timeout!使用-n选项可以设置read命令记录指定个数的输入字符,当输入字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。
$ cat test.sh #!/bin/bashread -n 1 -p "Enter y(yes) or n(no):" choiceecho echo "your choice is : $choice"$ ./test.sh Enter y(yes) or n(no):yyour choice is : y运行脚本后,只需输入一个字母,read命令就自动退出,这个字母被传给了变量choice。使用-s选项,能够使用户的输入不显示在屏幕上,最常用到这个选项的地方就是密码的输入。
$ cat test.sh#!/bin/bashread -s -p "Enter your passwd:" passwdecho echo "your passwd is : $passwd"$ ./test.shEnter your passwd:your passwd is : 123456read命令还可以读取linux存储在本地的文件,每调用一次read命令,都会从标准输入中读取一行文本,利用这个特性,我们可以将文件中的内容放到标准输入流中,然后通过管道传递给read命令。
$ cat test.txt apple pen pearbananaorange$ cat test.sh#!/bin/bashcount=1cat test.txt | while read linedo     echo "Line $count: $line"    count=$[$count+1]doneecho "the file is read over"$ ./test.sh Line 1: appleLine 2: penLine 3: pearLine 4: bananaLine 5: orangethe file is read over读到文件末尾,read命令以非零状态码退出,循环结束。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表