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…

51单片机学习笔记之定时器程序设计

一、定时器/计数器概述 1.相关寄存器 (1)TMOD——方式控制寄存器 GATE C/T M1 M0(T1 T0) GATE0,定时器/计数器的运行由内部TR0/TR1置1选通; GATE1,定时器/计数器的运行由外部中断(I引…

c语言三阶素数魔方阵,用C语言构造3*3素数魔方阵,即找出9个不大于500的素数并排成魔方阵。...

匿名用户1级2014-05-10 回答#include<stdio.h>int sushu(int n){int i;if(n1) return 1;for(i2; i<n; i)if(n%i0) break;if(ni) return 1;else return 0;}int wunai(int t, int b, int c, int d, int e, int f, int g, int h, int p){int a[9];int i, j;a[0]t; a[1]b;…

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…

《北方》--艾青

而我 ——这来自南方的旅客&#xff0c; 却爱这悲哀的北国啊。 扑面的风沙 与入骨的冷气&#xff0c; 决不曾使我咒诅&#xff1b; 我爱这悲哀的国土&#xff0c; 一片无垠的荒漠&#xff0c; 也引起了我的崇敬&#xff1a; ——我看见 我们的祖先 带领了羊群&#xff0c; 攻着…

android 广播唤醒应用,Android通过广播实现灭屏和唤醒

1、要实现灭屏和唤醒&#xff0c;需要在Manifest文件添加如下权限&#xff1a;2、以下是封装的一个工具类&#xff0c;实现屏幕唤醒和熄灭package testWakeAndLock;import android.content.Context;import android.os.PowerManager;import android.os.SystemClock;import com.e…

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…

Android studio实现底部导航,AndroidStudio制作底部导航栏以及用Fragment实现切换功能...

前言大家好&#xff0c;我是 Vic&#xff0c;今天给大家带来AndroidStudio制作底部导航栏以及用Fragment实现切换功能的概述&#xff0c;希望你们喜欢学习目标AndroidStudio制作底部导航栏以及用Fragment实现切换功能&#xff0c;用户点击底部导航栏可以实现三个模块的跳转。图…

H5新人福音~零配置搭建现代化的前端工程

X-BUILD一套基于Webpack(v4.21.0)快速搭建H5场景开发环境的脚手架&#xff0c;只需要几分钟的时间就可以运行起来。X-BUILD是针对H5开发的一套自动化构建工具&#xff0c;致力于提升开发效率&#xff0c;减小开发难度。它可以让你在没有任何构建工具&#xff08;例如 grunt 、 …

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…

android.9背景图变形,Android聊天背景图片变形解决方案

Android聊天背景图片变形&#xff0c;一般是由于键盘引起的。可以参看StackOverFlow解决的地址&#xff1a;外链网址已屏蔽我这里用的也是参考这里的方法&#xff1a;解决方法很简单&#xff1a;1、在AndroidManifest.xml文件里面的Activity配置&#xff1a;android:windowSoft…

第六天任务情况

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

java学习(101):arraylist的遍历和增加

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

android在主程序中调用图片,009android初级篇之APP中使用系统相机相册等集成应用...

009android初级篇之APP中使用系统相机相册等集成应用android应用中使用相机功能&#xff0c;大致有两种方式实现&#xff1a;直接调用系统内部的相机程序&#xff0c;显示的也是系统预设的界面(简单&#xff0c;只有简单的拍照功能)&#xff1b;自己去implement一个相机程序(不…

生成下拉框的几种方法总结——数据来源:枚举

上节介绍数据来源是数据库&#xff0c;这节介绍对枚举进行数据获取&#xff0c;形成下拉列表。 使用场景&#xff1a;某些状态值获取等&#xff0c;一般是数据量小&#xff0c;不需要在数据库中进行维护的数据集 1、前提要有枚举数据 package com.test.entity.neworder;import …