首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >在Bash中,怎样重复输出一个字符

在Bash中,怎样重复输出一个字符

作者头像
程序熵
发布2024-01-04 10:38:14
发布2024-01-04 10:38:14
8340
举报
文章被收录于专栏:技术汇技术汇

问:

我怎样能使用 echo 命令实现这个?

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

答:

可以使用 Bash 中内置命令 printf:

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

我们可以对 printf 命令进行以下测试:

代码语言:javascript
复制
$ printf '%.0s' 'A' | wc -c
0
$ printf '=%.0s' 'A'
=

然后我们可以理解上述语句是如何实现提问者所需的重复输出指定字符的需求的:

%.0s 是 printf 的格式说明符,其中:

% 表示这是一个格式转换说明符。

.0 指定了宽度为 0 的字段,对于字符串而言,这意味着不打印任何字符。

s 是格式转换字符,表示输出字符串。

{1..100} 是 Bash 的花括号扩展,它会扩展成从 1 到 100 的一系列数字:1 2 3 ... 99 100。

这样一结合起来,printf '=%.0s' {1..100} 实际上是尝试对从 1 到 100 的每一个数字执行格式化输出,但由于格式说明符指定的是一个宽度为 0 的字符串字段,因此命令只输出 100 次 = 而不会输出任何数字。

如果要使用 echo 命令,可结合循环语句来实现所需效果:

代码语言:javascript
复制
for i in {1..100}; do echo -n =; done
#或者
for ((i=0; i<100; i++)); do echo -n =; done

实际上,还有很多其他命令组合也可实现同样的效果,具体可参考 stackoverflow 问答原文。


参考文档:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档