2010-04-20 45 views
0

在perl中,你可以简单地写打印“ - ”x 20,并且你得到一条破折号的行......但是我需要在bash/commandline中的相同的东西没有Perl的Linux /(克)awk等任何想法?其目的是在find命令的-exec使用它,我想避免使用简单的回声“---------” ......在Bash或命令行中打印“ - ”x20的perl的等价物

回答

2

你可以创建你自己的功能

customprint(){ 
    num=$1 
    symbol=$2 
    for((i=1;i<=$num;i++));do printf "%s" $symbol; done 
} 

customprint 20 "-" 

customprint(){ 
    num=$1 
    symbol=$2 
    a=$(printf "%0${num}s") 
    echo ${a// /$symbol} 
} 

customprint 20 "-" 

num=20 
eval printf '%.0s-' {1..$num} 
+0

+1,好一个... – codaddict 2010-04-20 09:42:13

+0

难道不应该是'回声$ {//一个0/$符号}'? – 2010-04-20 10:24:22

+0

不,“%0 s”给你空白。只有当你使用“%0 d”它会给你带领的0's – ghostdog74 2010-04-20 10:45:03

1

所以我要更短一点的解决方案

下将产生60个破折号...行无功能...

echo ={1..60} | sed "s/[0-9]* \?//g" 
+0

在你的问题中,你说没有使用Perl/awk,所以现在你用的是sed? – ghostdog74 2010-04-20 11:10:39

+0

这是短的,没有使用外部工具:'eval printf'%.0s-'{1 .. $ num}' – ghostdog74 2010-04-20 11:27:29

+0

是的,你是对的。你的建议比我的更冷。谢谢。 – khmarbaise 2010-04-20 11:29:41