首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我怎样才能在Bash中重复角色?

我怎样才能在Bash中重复角色?
EN

Stack Overflow用户
提问于 2011-03-18 08:45:42
回答 33查看 224.9K关注 0票数 322

我怎么能用echo做这件事

代码语言:javascript
复制
perl -E 'say "=" x 100'
EN

回答 33

Stack Overflow用户

回答已采纳

发布于 2011-03-18 08:58:47

您可以使用:

代码语言:javascript
复制
printf '=%.0s' {1..100}

这是如何运作的:

Bash展开{1.100},使命令变为:

代码语言:javascript
复制
printf '=%.0s' 1 2 3 4 ... 100

我已经将printf的格式设置为=%.0s,这意味着无论给出什么参数,它都会打印单个=。因此,它打印100 =s。

票数 515
EN

Stack Overflow用户

发布于 2011-03-18 08:52:23

不容易。但例如:

代码语言:javascript
复制
seq -s= 100|tr -d '[:digit:]'
# Editor's note: This requires BSD seq, and breaks with GNU seq (see comments)

或者是一种符合标准的方法:

代码语言:javascript
复制
printf %100s |tr " " "="

还有一个tput rep,但是对于我手头的终端(xterm和linux),它们似乎不支持它:)

票数 124
EN

Stack Overflow用户

发布于 2011-03-18 08:50:45

有不止一种方法可以做到。

使用循环的

  • 大括号展开可以与整数字面值一起使用: 对于i在{1..100};执行回波-n =;已完成
  • C类循环允许使用变量: start=1 end=100 for (i=$start;i<=$end;i++);do echo -n =;done

使用printf 内置:的

代码语言:javascript
复制
printf '=%.0s' {1..100}

在这里指定精度会截断字符串以适应指定的宽度(0)。当printf重用格式字符串来使用所有参数时,这只需打印"=" 100次。

使用head (**printf**,等的和 tr**:**

代码语言:javascript
复制
head -c 100 < /dev/zero | tr '\0' '='
printf %100s | tr " " "="
票数 59
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5349718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档