【发布时间】:2021-02-07 01:53:27
【问题描述】:
这不是另一个问题的重复,原因有两个。该问题没有指定答案必须是 POSIX。该问题的标记答案无法在 Dash shell 中正确运行。 (我不知道如何判断答案是否是 POSIX,但它没有在最新版本的 Dash 上运行。
为了澄清,我只想使用 POSIX shell 内置函数。我应该更清楚地说明这一点。据我所知,seq 是一个 GNU 实用程序,这意味着我必须生成一个外部程序。我不想产生任何外部程序。
我想知道在 shell 脚本中乘以字符串的最有效方法。例如脚本将执行如下...
./multiplychar "*" "5"
*****
./multiplychar "*" "1"
*
./multiplychar "*" "0"
# It would not output anything
我似乎再也找不到它了,但我很久以前就为 bash 找到了这个问题。然而,所有答案都使用了像 Perl e.x 这样的外部程序。 perl -E "print '$' x $2" 或使用 bashisms。
我想知道如何在 POSIX shell 中本地完成这项工作。我正在使用破折号。如果有多种方式,如果出于效率考虑,我将处理小于 100 的小数字。(这是一个严格基于文本的音量条通知的脚本。)
外壳:破折号
操作系统:Arch Linux
【问题讨论】:
标签: shell posix dash-shell