多次打印字符串

多次打印字符串

我想编写一个带有两个参数的脚本,一个字符串和一个数字。该脚本打印字符串 n 次,并用星号四舍五入。所以对于前任来说。script "Hello World!" 3将打印:

**************
*Hello World!*
*Hello World!*
*Hello World!*
**************

我怎样才能做到这一点?

答案1

我们可以使用 使字符串的长度*与输入的长度相同sed。我们也可以非常简单地循环。每行的输出将是

*$stars*
*$input*
...repeated...
*$stars*

*所以我们可以创建一个简单的“输出”函数,只需将所需的字符串放在周围

#!/bin/bash

string=$1
count=$2

stars=$(echo "$string" | sed 's/./*/g')

output() { printf "*%s*\n" "$1"; }

output "$stars"
for ((a=0;a<$count;a++))
{
  output "$string"
}
output "$stars"

例如

./x "Hello world!" 3
**************
*Hello world!*
*Hello world!*
*Hello world!*
**************

答案2

实现此目的的一种方法是使用 seq 来表示字符串被回显的次数,并使用 printf 来对星号进行字符串操作。

SAY=$1
NUM=$2
CMD="echo *$SAY*"

c="${SAY//[*]}**"
s=$(printf "%-${#c}s" "*")
echo "${s// /*}"

for i in $(seq $NUM)
do $CMD
done

echo "${s// /*}"

然后您可以使用带有参数的脚本./script.sh "Hello World" 3

相关内容