2012年11月13日星期二

让echo命令不显示空格

Bash里面
echo {a..z}
会显示:
a b c d e f g h i j k l m n o p q r s t u v w x y z
怎么让它不显示空格呢?试了试IFS不管用,在Freenode上问,人说echo本来就是要显示空格的。这在help echo输出的内置帮助中没有说明,但在info echo输出的外部命令手册中有说明。可以用
printf %s {a..z}
不显示空格。如果必须用echo而不显示空格,看似可以用
echo -e '\b'{a..z}
但这只是看起来没有空格,并不是单纯的26个字母的输出。如用rev倒序上面的输出得不到正确结果:
$ echo -e '\b'{a..z} | rev
                         a
cat -e来看:
$ echo -e '\b'{a..c} | cat -e
^Ha ^Hb ^Hc$
$ echo -e '\b'{a..c} | rev | cat -e

c^H b^H a^H$
顺序的时候空格不显示,但是倒序的时候,每次退格到字母下方(除了a)再打印一个空格,所以最后就只剩下a了。

没有评论:

发表评论