echo 命令几个问题

来源:互联网 发布:淘宝店铺生成app 编辑:程序博客网 时间:2024/06/13 16:51

echo 命令几个问题:

1.单引号和双引号的区别:
使用双引号时候,echo会处理一些特殊字符,例如$;使用单引号时,单引号的内容会原样输出
例如:
oracle[~]$echo '$ORACLE_HOME'
$ORACLE_HOME
oracle[~]$echo "$ORACLE_HOME"
/u01/oracle

2. 字符转义
除了单引号可以进行转义外,使用右斜杠也可以进行转义:

oracle[~]$echo  "\$ORACLE_HOME"
$ORACLE_HOME
oracle[~]$echo  \$ORACLE_HOME  
$ORACLE_HOME

3. 如何打印一些特殊字符(例如回车,制表符)?

如果没有加别的选项,\用于转义

oracle[~]$echo  \\$ORACLE_HOME
\/u01/oracle

要打印一些特殊字符,那就需要使用-e选项配合右斜杠(\)
-e选项使用方法如下:
   \a 发出警告声;
   \b 删除前一个字符;
   \c 最后不加上换行符号;
   \f 换行但光标仍旧停留在原来的位置;
   \n 换行且光标移至行首;
   \r 光标移至行首,但不换行;
   \t 插入tab;
   \v 插入垂直方向上的制表符;
   \\ 插入\字符;
   \0NNN  byte with octal value NNN (1 to 3 digits)
    \xHH   byte with hexadecimal value HH (1 to 2 digits)
   
 在这个时候,需要加双引号:
 
1. 不换行输出(类似echo -n):
oracle[~]$echo -e "您好\c"  
您好oracle[~]$

2. 输出tab:
oracle[~]$echo  -e "商品\t\t 单价"
商品             单价

3. 输出某个8进制数表示的ascii码
oracle[~]$echo -e "\0123"
S

4. 输出某个16进制数表示的ascii码
oracle[~]$echo -e "\x53"
S