fumingxia 发表于 2018-8-20 13:23:59

shell中的echo命令

用途说明
  echo命令用来打印信息,是一个最常用的命令。在命令行中常用来打印环境变量的值,已确定当前环境中是否设置了指定的环境变量。在shell脚本中,常用来打印信息和帮助调试程序。
常用参数
  -n 打印信息之后不换行。
  -e 对字符串转义。
使用示例
示例一 打印当前的PATH设置
  # echo $PATH
  /usr/kerberos/sbin:/usr/kerberos/bin:/usr/apache/apache-ant-1.7.1/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  #
示例二 打印当前的LANG设置
  # echo $LANG
  zh_CN.GB18030
  #
  网上经常有人问在Linux下将默认语言更改为中文,我一般的做法是
  在/etc/profile的末尾加上
  export LANG=zh_CN.GB18030
  然后重新登录即可。但是较低版本的Linux通常在某些命令的输出中出现乱码,比如常用的service命令。
示例三 打印之后不换行
  # echo -n "Please input your name: "; read name; echo "Your name is $name"
  Please input your name: coding
  Your name is coding
  #
  此处使用了-n参数,避免在输出信息之后自动换行。
示例四 对输出信息进行转义,比如输出换行
  # echo "hello\nworld"
  hello\nworld
  # echo -e "hello\nworld"
  hello
  world
  # echo 'hello\nworld'
  hello\nworld
  # echo -e 'hello\nworld'
  hello
  world
  # echo hello; echo world
  hello
  world
  #
  可以使用如下转义字符
  \a 发出警告声;
  \b 删除前一个字符;
  \c 最后不加上换行符号;
  \f 换行但光标仍旧停留在原来的位置;
  \n 换行且光标移至行首;
  \r 光标移至行首,但不换行;
  \t 插入tab;
  \v 与\f相同;
  \\ 插入\字符;
  \nnn 插入nnn(八进制)所代表的ASCII字符;
  # echo "hello\fworld"
  hello\fworld
  # echo -e "hello\fworld"
  hello
  world
  # echo "hello\vworld"
  hello\vworld
  # echo -e "hello\vworld"
  hello
  world
  #
示例五 输出到标准错误输出
  在编写脚本时,经常会利用管道将前一个命令的输出作为后一个命令的输入,如果要打印调试信息,但不把该信息干扰后面的命令,可以将调试信息输出到标准错误输出,如下所示。
  # echo hello >&2
  hello
  #
  下面是一个应用此技巧的脚本片段。
  Bash代码http://codingstandards.iteye.com/images/icon_star.png

[*]  # usage: proc_cmd
[*]  proc_cmd()
[*]  {
[*]  CMD=$1
[*]  NUM=$(get_estimate_count $CMD)
[*]  # 只有返回数值的时候才打印信息,否则出错了
[*]  if [ "$NUM" ]; then
[*]  printf "%-48s\t%16s\n"$CMD    $NUM
[*]  else
[*]  echo $CMD >&2
[*]  echo $CMD >>failed.dat
[*]  fi
[*]  }
问题思考

[*]  将要输出的信息放在单引号、双引号以及不放在引号中有什么区别?
  当shell碰到第一个单引号时,它忽略掉其后直到右引号的所有特殊字符
  2. 双引号 ( " " )
  双引号作用与单引号类似,区别在于它没有那么严格。单引号告诉shell忽略所有特殊字符,而双引号只要求忽略大多数,具体说,括在双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串.如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。如果要查询包含空格的字符串,经常会用到双引号。参考http://blog.csdn.net/wyyzsl212328/article/details/8501650
  2. 怎样输出彩色文字(如同ls时的效果)?
  出处:http://codingstandards.iteye.com/blog/786101

页: [1]
查看完整版本: shell中的echo命令