Chinaunix首页 | 论坛 | 博客
  • 博客访问: 302026
  • 博文数量: 84
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 890
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-13 16:46
文章分类

全部博文(84)

文章存档

2017年(2)

2016年(4)

2015年(78)

我的朋友

分类: LINUX

2015-06-09 14:35:47

命令描述
linux的echo命令, 在shell编程中极为常用, 在终端(或者叫屏幕)下打印(屏幕输出)变量value的时候也是常常用到。
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。

echo默认会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。

需要注意的是echo返回的状态值永远是0,也就是,echo执行结果永远是正确的。
比如,你用echo来显示一个未声明赋值的变量名,会显示空,但执行结果是正确的。

命令格式


命令参数
-n 不要在最后自动换行(不要输出衍生的新行)
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出(启用反斜线转义解释)

   \a ALERT/BELL 从系统喇叭送出铃声
   \b 删除前一个字符;BACKSPACE 向左删除键
   \c 最后不加上换行符号;CANCEL 取消行末之换行符号
   \f 换行但光标仍旧停留在原来的位置;FORMFEED 换页字符
   \n 换行且光标移至行首;NEWLINE 换行字符
   \r 光标移至行首,但不换行;RETURN 回车键
   \t 插入tab,又叫水平制表,TAB 表格跳位键
   \v 与\f相同,又叫垂直制表,VERTICAL TAB 垂直表格跳位键
   \\ 插入\字符;
   \nnn 插入nnn(八进制)所代表的ASCII字符,tab符号的ascii码值是011,以x开首为十六进制
–help 显示帮助
–version 显示版本信息

实例:
1、显示定义的变量的值(也叫输出一个声明的变量值)
  1. [root@RHEL6 ~]# echo $USER  //显示环境变量USER的变量值
  2. root
  3. [root@RHEL6 ~]# echo $HOME  //显示环境变量HOME的变量值
  4. /root
  5. [root@RHEL6 ~]# date=`date`  //设定date的变量为date命令的输出,注意使用的反单引号,数字1号键左边的按键,还有一种避免混淆的写法是date=$(date)
  6. [root@RHEL6 ~]# echo "Today's date time is :$date"  //将变量与文本结合一起输出,被双引号括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。
  7. Today's date time is :Tue Jun 9 13:54:30 CST 2015
2、显示文本字符串
  1. [root@RHEL6 ~]# echo 'Hi this echo command testing'  //被单引号括住的内容,将被视为单一字串。在引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。
  2. Hi this echo command testing
  3. [root@RHEL6 ~]# echo Hi this echo command testing  ////由于没有特殊符号也可以这样写
  4. Hi this echo command testing
3、在echo命令中使用反斜线\b参数就是删除前一个字符
  1. [root@RHEL6 ~]# echo -e "Ubuntu \bis \bthe \bbest \bDesktop \bOS"
  2. UbuntuisthebestDesktopOS
4、在echo命令中使用制表符空格\t表示插入tab键值
  1. [root@RHEL6 ~]# echo -e "Ubuntu \tis \tthe \tbest \tDesktop \tOS"  //其实是“空格”加了一个“tab”键
  2. Ubuntu is the best Desktop OS
5、在echo命令中使用垂直制表符对应参数是\f和\v
  1. [root@RHEL6 ~]# echo -e "Ubuntu \fis \fthe \fbest \fDesktop \fOS"  //从第二行起,每一行应该是一个“空格+n个tab”
  2. Ubuntu
  3.        is
  4.           the
  5.               best
  6.                    Desktop
  7.                            OS
6、也可以这样\v参数与\t参数混用,最后一个单词OS与Desktop间使用了tab
  1. [root@RHEL6 ~]# echo -e "Ubuntu \vis \vthe \vbest \vDesktop \tOS"   
  2. Ubuntu
  3.        is
  4.           the
  5.               best
  6.                    Desktop OS
  7. [root@RHEL6 ~]#
7、使用\n参数(换行且光标移至行首,怎么移至行首的不知道)
  1. [root@RHEL6 ~]# echo -e "Ubuntu \nis \nthe \nbest \nDesktop \n\n\nOS"
  2. Ubuntu
  3. is
  4. the
  5. best
  6. Desktop
  7.            //这是\n\n\n命令的结果可以体会一下,换了3行;

  8. OS
  9. [root@RHEL6 ~]#


8、\nnn参数利用ACSII(tab符号的ascii码值是011)
  1. [root@RHEL6 ~]# echo -e "a\tb\tc"      //使用\t参数和使用\011参数得到的结果相同
  2. a b c
  3. [root@RHEL6 ~]# echo -e "a\011b\011c"
  4. a b c
  5. [root@RHEL6 ~]#
9、使用-n参数,不要在最后自动换行(不要输出衍生的新行)
  1. [root@RHEL6 ~]# echo "Enter you name"    //默认是自动换行的
  2. Enter you name
  3. [root@RHEL6 ~]# echo -n "Enter you name"  //不换行
  4. Enter you name[root@RHEL6 ~]#   //不是我没换行,而是系统就这么输出的,不信你试试
10、使用-n参数在脚本中的应用
  1. vim fristshell  //使用vim编辑一个叫fristshell的脚本,脚本内容是2-6行。
  2. #!/bin/bash
  3. echo -n "Enter your name:" //参数-n的作用是不换行,echo默认是换行
  4. read name //从键盘输入,并定义name变量的内容;
  5. echo "hello $name,welcome to my program" //显示文本及变量信息
  6. exit 0 //退出脚本程序
  7. [root@awake ~]# chmod 744 fristshell  //赋予文件执行权限
  8. 如果去掉-n参数那么执行这个fristshell时下面的提示是这样
  9. [root@awake ~]# ./fristshell
  10. Enter you name:
  11. awake
  12. hello awake,welcome to my program
  13. [root@awake ~]#

  14. 加上-n参数的到的结果是这样,是不是加上-n参数更顺眼一些?
  15. [root@awake ~]# ./fristshell
  16. Enter you name:awake
  17. hello awake,welcome to my program
11、用echo显示变量
  1. [root@RHEL6 ~]# version=$(uname -r)
  2. [root@RHEL6 ~]# echo $version         //显示一个变量
  3. 2.6.32-358.el6.x86_64
  4. [root@RHEL6 ~]# echo $version $PATH   //同时显示两个变量
  5. 2.6.32-358.el6.x86_64 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  6. [root@RHEL6 ~]# echo ${version} ${PATH}  //同时显示两个变量的另外一种写法,一般情况下,$var与${var}并没有啥不一样。但是用${}会比较精确的界定变量名称的范围
  7. 2.6.32-358.el6.x86_64 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  8. [root@RHEL6 ~]# echo `uname -r`         //显示一个命令的结果
  9. 2.6.32-358.el6.x86_64
  10. [root@RHEL6 ~]# echo $(uname -r)        //显示一个命令的结果的另外写法
  11. 2.6.32-358.el6.x86_64
  12. [root@RHEL6 ~]# 


12、其他的例子,显示代有计算式的变量内容

  1. [root@awake scripts]# date_d="-200"
  2. [root@awake scripts]# echo $date_d
  3. -200
  4. [root@awake scripts]# echo $((-1*$date_d))
  5. 200
  6. [root@awake scripts]#



阅读(2035) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~