Linux read的用法

作者:子非木 链接:https://www.cnblogs.com/wangtao1993/p/6136169.html

1、read基本读取

  1 #!/bin/bash
  2 #testing the read command
  3 
  4 echo -n "Enter you name:"   #echo -n 让用户直接在后面输入 
  5 read name  #输入的多个文本将保存在一个变量中
  6 echo "Hello $name, welcome to my program."                                      

执行:

# ./read.sh
Enter you name: wangtao
Hello wangtao, welcome to my program.

2、read -p (直接在read命令行指定提示符)

  1 #!/bin/bash
  2 #testing the read -p option
  3 read -p "Please enter your age: " age
  4 days=$[ $age * 365 ]
  5 echo "That makes you over $days days old!"

执行:

# ./age.sh
Please enter your age: 23
That makes you over 8395 days old!

3、read -p (指定多个变量)

  1 #!/bin/bash
  2 # entering multiple variables
  3 
  4 read -p "Enter your name:" first last
  5 echo "Checking data for $last, $first"

执行:

# ./read1.sh
Enter your name: a b
Checking data for b, a

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

 1 #!/bin/bash
  2 # testing the REPLY environment variable
  3 
  4 read -p "Enter a number: "
  5 factorial=1                         
  6 for (( count=1; count<= $REPLY; count++ ))
  7 do
  8    factorial=$[ $factorial * $count ]   #等号两端不要有空格
  9 done
 10 echo "The factorial of $REPLY is $factorial"

执行:

./read2.sh
Enter a number: 6
The factorial of 6 is 720

5、超时, 等待输入的秒数(read -t)

  1 #!/bin/bash
  2 # timing the data entry
  3 
  4 if read -t 5 -p "Please enter your name: " name     #记得加-p参数, 直接在read命令行指定提示符
  5 then
  6     echo "Hello $name, welcome to my script"
  7 else
  8     echo 
  9     echo "Sorry, too slow!"
 10 fi

执行:

# ./read3.sh
Please enter your name: 
Sorry, too slow!
# ./read3.sh 
Please enter your name: wang
Hello wang, welcome to my script

5、read命令对输入的字符判断

  1 #!/bin/bash
  2 # getting just one character of input
  3 
  4 read -n1 -p "Do you want to continue [Y/N]? " answer
  5 case $answer in
  6 Y | y) echo
  7        echo "fine, continue on...";;
  8 N | n) echo 
  9        echo "OK, goodbye"
 10        exit;;
 11 esac   

执行:

# ./read4.sh
Do you want to continue [Y/N]? y
fine, continue on...

./read4.sh
Do you want to continue [Y/N]? n
OK, goodbye

6、隐藏方式读取(read -s)

  1 #!/bin/bash
  2 # hiding input data from the monitor
  3 
  4 read -s -p "Enter your passwd: " pass   #-s 参数使得read读入的字符隐藏
  5 echo 
  6 echo "Is your passwd readlly $pass?"
~                                          

执行:

# ./read5.sh
Enter your passwd: 
Is your passwd readlly osfile@206?

7、从文本中读取

  1 #!/bin/bash
  2 # reading data from a file
  3 
  4 count=1
  5 cat test | while read line
  6 do
  7    echo "Line $count: $line"
  8    count=$[ $count + 1 ]
  9 done
 10 echo "Finished processing the file"

执行:

 ./read6.sh
Line 1: The quick brown dog jumps over the lazy fox.
Line 2: This is a test, this is only a test.
Line 3: O Romeo, Romeo! Wherefore art thou Romeo?
Finished processing the file

本文分享自微信公众号 - Linux知识积累(LinuxLearning365),作者:子非木

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 曾是最流行的语言之一,Visual Basic 28年兴衰记

    这是一篇暴露年龄的文章。为什么这么说?因为现在年轻的程序员可能没有接触过当年红极一时的 Visual Basic。28 年前的 1991 年 4 月,Micro...

    用户5807183
  • REST API URI 设计的七准则

    在了解 REST API URI 设计的规则之前,让我们快速过一下我们将要讨论的一些术语。

    用户5807183
  • Linux系统inodes资源耗尽问题

    Linux系统下文件数据储存在"块"中,文件的元信息,例如文件的创建者、文件的创建日期、文件的大小等。这种储存文件元信息的区域就叫做inode,中文译名为"索引...

    用户5807183
  • Thinkphp5.0快速入门笔记(3)

    https://www.kancloud.cn/thinkphp/thinkphp5_quickstart

    嘘、小点声
  • 使用shell批量监控磁盘坏块(二) (r7笔记第80天)

    之前分享了第一篇 使用shell批量监控磁盘坏块(一),今天来简单说说这个需求的实现内容 。 首先主要思路是通过中控的机器来发送监控的细节,然后返回结果。 ?...

    jeanron100
  • Jenkins自动构建发布镜像脚本 原

    主要分两个脚本,一个是jenkins配置的构建脚本,一个是构建推送以及邮件脚本,首先上Jenkins脚本

    尚浩宇
  • 数据挖掘和机器学习的面试问题

    【磐创AI导读】:本文主要分享了机器学习需要注意的几个面试问题。想要学习更多的机器学习知识,欢迎大家点击上方蓝字关注我们的公众号:磐创AI。

    磐创AI
  • 1.10线程的优先级

    在操作系统中,线程是有优先级划分的,优先级较高的线程会得到相对较多的资源。 也就是说CPU会优先执行优先级较高的线程对象中的任务。 设置线程优先级有助于帮“线程...

    用户1134788
  • 单例模式

    背景:我们在实现单例模式的时候往往会忽略掉多线程的情况,就是写的代码在单线程的情况下是没问题的,但是一碰到多个线程的时候,由于代码没写好,就会引发很多问题,而且...

    大学里的混子
  • java线程编程

    大学里的混子

扫码关注云+社区

领取腾讯云代金券