这天同事问了一个问题,shell 中如何重复显示指定数目的字符?例如显示 72 个等号(=)作为一个分界线。脑子里马上想到 perl 和 python 中这个实在是太容易了:
$ perl -e "print '=' x 72"
$ python -c "print '=' * 72"
但是 shell 中可没有这样的语法,想了半天,只想到一个利用 printf 命令结合 sed 的做法:
$ printf "%*s" 72 '' | sed 's/ /=/g'
"%*s" 这个 format string 后面的第一个参数是字符串显示宽度,第二个参数才是真正要显示的字符串(这里是空串),与 C 语言中的 printf 类似。
虽然这个 printf 有点妙,不过后面跟了个 sed 才算解决问题,作为一种脚本语言,Shell 有时让人觉得实在是太弱了。应该有更好的解法……
2 Comments so far
wayne, on Jan 4, 2009 at 4:22am, said:
干嘛非要72个=, 有那么7,8不就ok了...
matt(w), on Jan 4, 2009 at 5:59pm, said:
一,不可以向问题低头;二,为了美观,呵呵。