I have the following string in bash
str="kallel"
I want to create from str
an str2
. The str2
contains str
duplicated till the length = 20. So the result should be like this:
str2="kallelkallelkallelka"
How to do in in bash?
I have the following string in bash
str="kallel"
I want to create from str
an str2
. The str2
contains str
duplicated till the length = 20. So the result should be like this:
str2="kallelkallelkallelka"
How to do in in bash?
This should work:
str="kallel"
str2="${str}"
while (( ${#str2} < 20 ))
do
str2="${str2}${str}"
done
str2="${str2:0:20}"
I'd go for a while loop personally then cut it at the end.
While the length of str2
is less than 20, add str
to str2
.
Then, for good measure, we cut at the end to max 20 characters.
#!/bin/bash
str="kallel"
str2=""
while [ ${#str2} -le 20 ]
do
str2=$str2$str
done
str2=`echo $str2 | cut -c1-20`
I am 100% stealing this answer from Bash : Duplicate a string variable n times but I thought it bore repeating (despite being on a 6 year old question):
$ yes "kallel" | head -20 | xargs | sed 's/ //g' | cut -c1-20
kallelkallelkallelka
$ str="kallel"
$ str2=$(printf "$str%.0s" {1..20})
$ echo "$str2"
kallelkallelkallelkallelkallelkallelkallelkallelkallelkallelkallelkallelkallelkallelkallelkallelkallelkallelkallelkallel
$ str2=$(printf "$str%.0s" {1..3})
$ echo "$str2"
kallelkallelkallel
$ n=5
$ str2=$(printf "$str%.0s" $(seq "$n"))
$ echo "$str2"
kallelkallelkallelkallelkallel