Python解决重复字符串是一个很轻松的事,比如说a="james",那么要获得"jamesjamesjames"就是"a*3"。
但是这种“*”的字符串乘法在shell里是没有的,比如说“要输出10个a”,还不想用for循环来做,怎么办?
首先都知道如果只是想输出1~10这十个数,是很简单的:
#echo {1..10}就会得到:1 2 3 4 5 6 7 8 9 10
而使用#seq 1 10也可以,只不过这样是竖着的,如果想要是横着的,就的是#seq -s " " 1 10,-s是指定分隔符的意思。
但是如果照葫芦画瓢,#echo "a"{1..10}的话输出的就会是10个a吗?
很可惜,输出结果是a1 a2 a3 a4 a5 a6 a7 a8 a9 a10。跟预期目标有差距,很讨厌。
不过这个方法还是有他的作用的,比如#echo {a,b,c}{1,2,3}
上面的命令会生成以下结果:a1 a2 a3 b1 b2 b3 c1 c2 c3。
#echo a {,,,,,,,,,,},打括号里是十个逗号,那这样效果是什么?
效果就是a a a a a a a a a a。
好像很接近了,但是这样的方法有空格不说,而且要手动打十个逗号,有这个时间我干脆直接打十个a多好,而且要是输出1000个a,我难道还要打1000个逗号吗?
那么就来一个困难的方法吧:
1
2
|
str=$(
printf
"%-10s"
"a"
)
echo
"${str// /a}"
|
这样的话输出就是10个a了。但是这个参数是什么意思呢?在这里我稍作更改:
1
2
|
str=$(
printf
"%-5s"
"o"
)
echo
"${str// /x0}"
|
这时候的输出就是ox0x0x0x0,可见str 后面的数字代表重复次数,而后面的单词就是开头。下面的echo输出“x0”就是具体的填充项。大括号里的str//是固定的,中间不能加东西。
这个方法不错,但是也太麻烦了,不好记。
换一个方法,用#printf %.sa {1..10}如何?
输出就是aaaaaaaaaa,没有空格,但是如果想要支持变量的话呢,再试试。
看样子并不支持变量。
如何能支持变量呢?还在找。
本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1775649