我知道如果我在python中执行print ("f" + 2 * "o")
,输出将为foo
。
但是如何在bash脚本中执行相同的操作?
答案 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)
答案 4 :(得分:0)
您可以创建函数来为特定计数循环字符串,并在 循环执行动态长度。 仅供参考:其他版本的其他答案。
line_break()
{
for i in `seq 0 ${count}`
do
echo -n "########################"
done
}
line_break 10
打印:################