在bash脚本中乘以字符串

时间:2016-08-10 08:59:34

标签: string bash multiplication

我知道如果我在python中执行print ("f" + 2 * "o"),输出将为foo

但是如何在bash脚本中执行相同的操作?

5 个答案:

答案 0 :(得分:8)

您可以使用bash command substitution在系统之间移植,而不是使用特定于变体的命令。

$ myString=$(printf "%10s");echo ${myString// /m}           # echoes 'm' 10 times
mmmmmmmmmm

$ myString=$(printf "%10s");echo ${myString// /rep}         # echoes 'rep' 10 times
reprepreprepreprepreprepreprep

将它包装在更实用的shell函数中

repeatChar() {
    input="$1"
    count="$2"
    myString="$(printf "%${count}s")"
    echo "${myString// /$input}"
}

$ repeatChar str 10
strstrstrstrstrstrstrstrstrstr

答案 1 :(得分:3)

你可以简单地使用循环

$ for i in {1..4}; do echo -n 'm'; done
mmmm

答案 2 :(得分:2)

在bash中,您可以以类似的方式使用简单的字符串索引

numNs + 1

输出

numOs

另一种方法是简单地将字符连接成一个字符串

#!/bin/bash
oos="oooooooooooooo"
n=2
printf "%c%s\n" 'f' ${oos:0:n}

输出

foo

还可以使用其他几种。

答案 3 :(得分:1)

那样做:

printf 'f'; printf 'o%.0s' {1..2}; echo

查看here有关“倍增”部分的解释。

答案 4 :(得分:0)

您可以创建函数来为特定计数循环字符串,并在 循环执行动态长度。 仅供参考:其他版本的其他答案。

  line_break()
    {
        for i in `seq 0 ${count}`
        do
          echo -n "########################"
        done
    }

    line_break 10

打印:################