Linux学习——echo和read命令用法

转载自http://www.runoob.com/linux/linux-comm-read.html

http://www.178linux.com/76331

echo命令

本文列举了echo命令的几个常用用法并加以实例说明,以作回顾、参考。

echo命令常用作打印输出字符串,根据echo帮助文件可以获得以下信息:

       语法 echo [-neE][arg…]

       三个参数:

                       -n : 关闭输出文字时的自动换行

                       -e : 开启转义字符功能( \ )

                       -E : (默认)关闭转义字符功能( \ )

       使用-e选项时,如果在字符串中键入以下字符,程序不会将之当成一般字符串输出,而是会使用其转义功能:

       • \a 发出警告声;
       • \b 删除前一个字符;
       • \c 最后不加换行符号并抑制字符后输出;
       • \f 换行但光标仍旧停留在原来的位置;
       • \n 换行且光标移至行首;
       • \r 光标移至行首,但不换行;
       • \t 水平制表符;
       • \v 垂直制表符;
       • \\ 插入\字符;
       • \0nnn 插入nnn(八进制)所代表的ASCII字符;NNN为0到3位八进制数字
       • \xHH 插入HH(十六进制)所代表的ASCII字符;HH为1到2位十六进制数字

      实例

     

1.打印输出一行字符串 

linux  echo命令用法实例

 

 2. 使用”\b” 选项

     相当于退格符    

linux  echo命令用法实例

 

  3. 使用”\c” 选项

    不打印输出\c 以后的字符,并且结果不换行(使用-n 选项只是输出结果不换行)       

linux  echo命令用法实例

 4. 使用”\n” 选项

          相当于在\n 后插入新行        

linux  echo命令用法实例

 5. 使用”\r” 选项

         回车,光标移至首位,但不换行              

linux  echo命令用法实例

 

 6. 使用”\0NNN” 选项

          返回八进制多代表的ASCII字符        

linux  echo命令用法实例

 

7. 使用”\xHH” 选项

          返回16进制数所代表的ASCII字符

linux  echo命令用法实例


 8. 打印输出bash环境变量       

linux  echo命令用法实例

 

      延伸:
      单引号”; 双引号””; 反向单引号引用强弱程度比较
         

linux  echo命令用法实例

 

      从运行结果不难看出,”单引号是强引用,不完成变量替换;反向单引号是弱引用,可以实现命令和变量替换;””双引号强弱程度据两者中间,只可以实现变量替换

 

read命令

 

Linux read命令用于从标准输入读取数值。

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、简单读取

#!/bin/bash
#这里默认会换行  
echo "输入网站名: "  
#读取从键盘的输入  
read website  
echo "你输入的网站名是 $website"  
exit 0  #退出

测试结果为:

输入网站名: 
www.runoob.com
你输入的网站名是 www.runoob.com

 

2、-p 参数,允许在 read 命令行中直接指定一个提示。

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

测试结果为:

输入网站名:www.runoob.com
你输入的网站名是 www.runoob.com

 

3、-t 参数指定 read 命令等待输入的秒数,当计时满时,read命令返回一个非零退出状态。

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

执行程序不输入,等待 5 秒后:

输入网站名:
抱歉,你输入超时了

 

4、除了输入时间计时,还可以使用 -n 参数设置 read 命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。

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

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

只接收 2 个输入就退出:

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

执行程序输入两个字符:

请随便输入两个字符: 12 您输入的两个字符是:12

 

5、-s 选项能够使 read 命令中输入的数据不显示在命令终端上(实际上,数据是显示的,只是 read 命令将文本颜色设置成与背景相同的颜色)。输入密码常用这个选项。

#!/bin/bash
read  -s  -p "请输入您的密码:" pass
echo "\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      # cat 命令的输出作为read命令的输入,read读到>的值放在line中
doecho "Line $count:$line"count=$[ $count + 1 ]          # 注意中括号中的空格。
done
echo "finish"
exit 0

执行结果为:

Line 1:123
Line 2:456
Line 3:runoob
finish

 

 一个简单的实现写博客功能的脚本

echo "Enter your title of your blog:"
read -r b_title 
echo -e $b_title >> blog.txt
date +"%F %a %R" >> blog.txt
echo "Enter your body of your blog:" 
read -r b_body
echo -e "$b_body" >> blog.txt
echo >> blog.txt
#echo -ne "\n" >> blog.txt
echo "Your blog has been saved."

 

 

 

转载于:https://www.cnblogs.com/wkfvawl/p/9982442.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

w ndows 高级索引,软媒原创:为Windows7建立索引,搜索文件更给力

Win7之家(www.win7china.com):软媒原创:为Windows7建立索引,搜索文件更给力也许你还记得XP时代搜索文件时出现的那只黄色的小狗狗,在Windows7时代,搜索变得更加快捷顺手,搜索栏就在那里,不点不搜…

java学习(95):线程的优先级

public class test30 {public static void main(String[] args){Thread xc11new Thread(new Xc41());Thread xc12new Thread(new Xc42());xc11.setPriority(Thread.NORM_PRIORITY3);//数字越大,优先级越高,默认为5xc11.start();xc12.start();} } class X…

java学习(96):线程的睡眠

//线程的睡眠 public class test31 {public static void main(String[] args){Xc43 xc43new Xc43();Thread cccnew Thread(xc43);ccc.start();} } class Xc43 implements Runnable {public void run(){for (int i0;i<10;i){System.out.println(Thread.currentThread().getNa…

java学习(97):中断线程的另一种处理

public class test32 {public static void main(String[] args){Thread xc13new Thread(new Xc44());Thread xc14new Thread(new Xc44());xc13.setName("线程一");xc14.setName("线程二");xc13.start();xc14.start();} } class Xc44 implements Runnable {…

调试nodejs项目接口,使用Posman,用req.body拿不到数据

近日在postman 上面测试nodejs写的post接口&#xff0c;发现后台接受不到数据。 很多人其实不知道怎么postman 上面GET和POST怎么使用的 Postman接口操作 1.GET请求操作&#xff1a; 2.GET请求操作结果&#xff1a; 3.POST请求操作&#xff1a; 4.POST请求操作结果&#xff1a;…

x-lite for linux,Linux Lite 4.6正式发布:现基于Ubuntu 18.04.3 LTS

原标题&#xff1a;Linux Lite 4.6正式发布&#xff1a;现基于Ubuntu 18.04.3 LTS创建者Jerry Bezencon于今天正式宣布Linux Lite 4.6系统版本更新&#xff0c;和上个版本4.4相隔5个月时间。新版本基于Canonical最近发布的Ubuntu 18.04.3 LTS(Bionic Beaver)操作系统&#xff0…

java学习(98):线程join使用中断进行另一个

public class test33 {public static void main(String[] args) {Xc46 xc46new Xc46();Thread dd new Thread(xc46);dd.start();try {dd.join();} catch (Exception e) {}for (int i0;i<15;i) {System.out.println("主函数"i);}} } class Xc46 implements Runna…

java学习(99):车站卖票问题

//买票问题 class Xc9 implements Runnable{public static int chepiao100;static String aanew String("1");//字符串随意定义&#xff0c;定义在函数上面public void run(){while (true){synchronized (aa) //可以修饰代码块&#xff0c;又可以修饰函数/*try{Thre…

java学习(100):集合类简介

//集合类的作用 public class test35 {private String name;private int num;private int grade;public test35(String name,int num,int grade){this.namename;this.numnum;this.gradegrade;}public String getName() {return name;}public int getGrade() {return grade;}pub…

第六天任务情况

今天的任务是完善程序再加入一个物理实验,我们的软件功能是能够添加各种实验包括公用的还是专业内的都可以纳入到我们的软件中, 可以想下载哪个下载哪个,不过这都是日后的目标了,我们现在制作出一个简单的程序和资源还不能分开的软件,希望越来越好吧 昨日任务:代码对接 今日任务…

java学习(102):arraylist的查询和删除

arraylist的查询和删除 //arraylist的遍历和增加 import java.util.ArrayList;public class test38 {public static void main(String[] args){ArrayList aa1new ArrayList();//当前对象个数System.out.println(aa1.size());test35 xs1new test35("歌谣",3,4);test35…

Android11怎么截屏,对标IOS?Android11或无缘屏幕长截图

我收集了一些学习用的资料&#xff0c;其中包含了很多学习&#xff0c;面试&#xff0c;中高进阶fluuter资料&#xff0c;还有很多视频详解&#xff0c;如果有同学想进一步了解&#xff0c;详情请看文末。也欢迎各路大神门前来装X。一直以来&#xff0c;不少用户都很喜欢用长截…

第一批升级鸿蒙系统,鸿蒙系统公开了第一批升级名单,果粉认为不地道

鸿蒙系统鸿蒙系统对于很多人来说并不陌生&#xff0c;它由华为独自研发&#xff0c;同样也代表着中国技术能力上的提升。还记得鸿蒙系统是在去年华为开发者大会上与广大用户见面&#xff0c;不仅招来了很多人的目光&#xff0c;并且一下子将知名度提高了许多。人们都想知道第一…

linux vma,内存管理 – Linux内核API find_vma

find_vma函数功能描述&#xff1a;find_vma( )函数根据一个属于某个进程的虚拟地址&#xff0c;找到其所属的进程虚拟区间&#xff0c;并返回相应的vma_area_struct结构体指针。find_vma文件包含#includefind_vma函数定义在内核源码中的位置&#xff1a;linux-3.19.3/mm/mmap.c…

SSM项目中整合WebService

先了解一下WebService的一些相关术语吧&#xff1a; WebService&#xff1a;WebService是一种跨编程语言和跨操作系统平台的远程调用技术。 WSDL(web service definition language)&#xff1a;WSDL是webservice定义语言, 对应.wsdl文档, 一个webservice会对应一个唯一的wsdl文…

搭载鸿蒙的油烟机,华为、美的合作:搭载鸿蒙系统的家电来了 三大亮点

日前&#xff0c;美的与华为在智能家居行业又有大动作&#xff1a;双方将在2021年实现合作规模化&#xff0c;从运营和营销角度开展更多联合合作。美的鸿蒙新家电亮点包括&#xff1a;第一是极速配网&#xff0c;只要用手机碰一碰&#xff0c;基于WiFi Aware配网协议即可实现设…

excel android 公式,两个超实用的Excel万能公式,瞬间提升你10倍工作效率!

相信大家在平时的工作中&#xff0c;都会经常有用到公式的需要&#xff0c;但是下面这些公式你用过吗&#xff0c;今天小编就带大家一起看看吧&#xff01;1. SUM函数这个函数不仅在我们学习的过程中会用到&#xff0c;即便到了工作后&#xff0c;也经常需要对各种数据进行处理…

Linux中常用命令(文件与目录)

1、pwd 查看当前目录&#xff08;Print Working Directory&#xff09;2、cd 切换工作目录&#xff08;Change Directory&#xff09;&#xff08;1&#xff09;格式&#xff1a;cd [目录位置]特殊目录&#xff1a;.当前目录..上一级目录~用户主目录-上个工作目录&#xff08;2…

计算机操作系统(1):OS的作用和目标

OS的目标和作用 操作系统&#xff08;Operating System , OS&#xff09;是计算机硬件上的第一层软件&#xff0c;是计算机必须配置的最基本、最重要的系统软件。 1.1.1 OS的目标 有效性 方便性 可扩展性 开放性 1&#xff0e;有效性(早期OS的主要目标) 有效提高CPU和…

计算机操作系统(2):OS的发展过程

1.2 OS的发展过程 20世纪50年代中期&#xff0c;第一个简单的批处理系统 60年代中期&#xff0c;多道程序批处理系统&#xff0c;随后出现分时系统 上世纪80年代开始至21世纪初&#xff0c;微型机、多处理机、计算机网络大发展年代→微机OS、多处理机OS和网络OS的形成和大发展…