2010-04-20 44 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