Chinaunix首页 | 论坛 | 博客
  • 博客访问: 208598
  • 博文数量: 26
  • 博客积分: 390
  • 博客等级: 二等列兵
  • 技术积分: 269
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-11 18:19
文章分类

全部博文(26)

文章存档

2014年(6)

2012年(4)

2011年(16)

分类:

2014-07-01 15:06:47

原文地址:echo和printf命令 作者:huxuelin1989

echo命令

功能: 输出文本行或变量
格式: echo 字符串
选项: -n 输出完后不换行
             -e 使转义字符生效
转义字符:
   \a 警示字符,通常是ASCII的BEL字符;
   \b 退格;
   \c 最后不加上换行符号,并且这个参数之后的任何字符都将被忽略掉;
   \f 换行但光标仍旧停留在原来的位置(即竖直位置不变);
   \n 换行且光标移至行首;
   \r 回车符(光标移至行首,但不换行);
   \t 水平制表符TAB;
   \v 与\f相同;
   \\ 反斜杠
字符;
   \0nnn 八进制数值;
    echo后跟的字符串可以加引号,也可以不加引号。当不加引号时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。当加引号时,又分为两类:单引号和双引号。

单引号:
    阻止对所有字符的转义,将所有字符都看作其字面上的意义。但是对echo的转义字符是由命令本身来处理的,如:

echo 'hello \n world $HOME'
hello \n world $HOME
echo -'hello \n world $HOME'
hello 
 world $HOME
$



双引号:
  双引号会处理括起来字符串中的转义字符、变量、算术、命令替换等,如果需要用到 $ " ' \ 等特殊字符的字面意义,都必须前置\ (这是用来告诉shell反斜杠后的字符即为字面上的意义)。
但对字符# 又视为普通字符,不再是注释的开头。

$ echo -"hello \n world $HOME"
hello 
 world /home/huxuelin
$ echo -"hello \n world \$HOME"
hello 
 world $HOME
$


printf命令

格式:printf format [ arguments ... ]
format: 描述格式规格的字符串
arguments: 参数列表
格式指示符:
%不进行转换。打印一个 %(百分号)。
d,i十进制整数
o无符号八进制整数
u无符号的十进制数
x,X无符号的十六进制数
f浮点格式
e,E浮点格式
g,G%e或%f转换,%E或%F转换
cASCII字符
s字符串
b相对应的参数被视为含有要被处理的转义序列的字符串

格式符 %b 的用法:

$ printf "a string: %s\n" "a\nb"
a string: a\nb
$ printf "a string: %b\n" "a\nb"
a string: a
b
$


规范格式:
-转换结果在字段中左对齐。
+符号转换结果常以符号(+ 或者 -)开始。
空格如果符号转换的第一个字符不是符号,结果的前缀将是空格。如果空格和 + 选项字符都显示,则忽略空格选项字符。
#此选项指定值转换到备用格式。对于 c、d、i、u 和 s 转换,选项没有作用。对于 o 转换,它增加精度来强制结果的第一数字是 a、0(零)。对于 x 和 X 转换,非零结果分别具有 0x 或 0X 前缀。对于 e、E、 f、g 和 G 转换,结果通常包含基数字符,即使基数字符后没有数字。对于 g 和 G 转换,结尾零不象通常一样除去。
0对于 d、i、o、u、x、e、E、f、g 和 G 转换,前导零(跟在符号或底数的后面)用于填充字段宽度,将不用空格填充。如果显示 0(零)和 -(减号)选项,0(零)选项被忽略。对于 dioux和 X 转换,如果指定精度,0(零)选项将被忽略

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