Bash Shell输出中加入格式控制

你希望能够更多地控制输出的格式和位置

解决方案

使用内建命令 printf。例如:

$ printf '%s = %d\n' Lines $LINES
Lines = 24
$

或者:

$ printf '%-10.10s = %4.2f\n' 'Gigahertz' 1.92735
Gigahertz   = 1.93
$

讨论

内建命令 printf 的行为和 C 语言中的同名库函数相似,其中第一个参数是格式控制字符串,之后的参数都根据格式规范(%)进行格式化。

% 和格式类型(本例为 s 或 f)之间的数字提供了额外的格式化细节。对于浮点类型(f),第一个数字(指示符 4.2 中的 4)是整个字段的宽度。第二个数字(2)是应该在小数点右侧打印出的数位量。注意,结果会按照四舍五入处理。

对于字符串,第一个数字是字段的最大宽度,第二个数字是要输出的字符数量。根据需要,字符串会被截断(长于 max)或用空白填充(不足 min)。如果指示符 max 和 min 相同,那么就可以确保字符串按照该长度输出。指示符左侧的负号表示字符串向左对齐(在字段宽度内)。如果不使用负号,则字符串向右对齐,因此:

$ printf '%10.10s = %4.2f\n' 'Gigahertz' 1.92735
  Gigahertz = 1.93
$

可以引用字符串参数,也可以不引用。如果需要保留字符串中嵌入的空白字符(本例的字符串中只有一个单词,不存在空格),或者需要转义字符串中的某些特殊字符(本例也未出现这些特殊字符),可以加上引号 。最好养成将传给 printf 的字符串都放进引号中的习惯,这样一来,需要用到引号时就不会遗漏了。

如果想要转义特殊字符,则需要使用双引号。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!