Linux 如何在bash中复制字符串?

Linux 如何在bash中复制字符串?,linux,string,bash,shell,Linux,String,Bash,Shell,我在bash中有以下字符串 str="kallel" 我想从str创建一个str2。str2包含重复的str,直到长度=20。所以结果应该是这样的: str2="kallelkallelkallelka" 在bash中该怎么做?我会亲自去做一段时间,然后在最后把它剪掉 当str2的长度小于20时,将str添加到str2。 然后,为了更好地衡量,我们在结尾处最多剪切20个字符 #!/bin/bash str="kallel" str2="" while [ ${#str2} -le 20 ]

我在bash中有以下字符串

str="kallel"
我想从
str
创建一个
str2
str2
包含重复的
str
,直到长度=20。所以结果应该是这样的:

str2="kallelkallelkallelka"

在bash中该怎么做?

我会亲自去做一段时间,然后在最后把它剪掉

str2
的长度小于20时,将
str
添加到
str2
。 然后,为了更好地衡量,我们在结尾处最多剪切20个字符

#!/bin/bash
str="kallel"
str2=""
while [ ${#str2} -le 20 ]
do
    str2=$str2$str
done
str2=`echo $str2 | cut -c1-20`

我会亲自去一段时间,然后在最后剪掉它

str2
的长度小于20时,将
str
添加到
str2
。 然后,为了更好地衡量,我们在结尾处最多剪切20个字符

#!/bin/bash
str="kallel"
str2=""
while [ ${#str2} -le 20 ]
do
    str2=$str2$str
done
str2=`echo $str2 | cut -c1-20`
这应该起作用:

str="kallel"
str2="${str}"
while (( ${#str2} < 20 ))
do
  str2="${str2}${str}"
done
str2="${str2:0:20}"
str=“kallel”
str2=“${str}”
而(${str2}<20))
做
str2=“${str2}${str}”
完成
str2=“${str2:0:20}”
这应该可以:

str="kallel"
str2="${str}"
while (( ${#str2} < 20 ))
do
  str2="${str2}${str}"
done
str2="${str2:0:20}"
str=“kallel”
str2=“${str}”
而(${str2}<20))
做
str2=“${str2}${str}”
完成
str2=“${str2:0:20}”

我100%地从别人那里窃取了这个答案,但我觉得重复这个答案很无聊(尽管是关于一个6岁的问题):


我100%地从别人那里窃取了这个答案,但我觉得重复这个答案很无聊(尽管是关于一个6年前的问题):


当[${stringZ}-le 20]
第35行:[:missing
]时,这一行出现错误,`在
20
之后和
]
之前应该有一个空格。修正了,封锁了。看起来像是无限循环。计算
$stringZ
的长度将始终返回相同的数字,因为循环只修改
$str2
,而不修改
$stringZ
…抱歉,伙计们-只需将其放在一起而不检查。应立即工作此行
中出现错误,而[${stringZ}-le 20]
第35行:[:missing
]`应在
20
之后和
]
之前留有空格。修正了,封锁了。看起来像是无限循环。计算
$stringZ
的长度将始终返回相同的数字,因为循环只修改
$str2
,而不修改
$stringZ
…抱歉,伙计们-只需将其放在一起而不检查。现在应该工作第2行(
str2=“${str}”
)是多余的。@devnull怎么会这样?它将一个变量(
${str}
)的值指定为循环前第二个变量(
str2
)的初始值。。。它将循环计数减少1,并覆盖以前的任何值
str2
,避免显式
str2=“”
str2
未赋值,因此长度为零。尝试
echo${#foo}
@devnull它可能是未分配的,但我不确定这是否是更大脚本的一部分。最好是安全的。第2行(
str2=“${str}”
)是多余的。@devnull怎么会这样?它将一个变量(
${str}
)的值指定为循环前第二个变量(
str2
)的初始值。。。它将循环计数减少1,并覆盖以前的任何值
str2
,避免显式
str2=“”
str2
未赋值,因此长度为零。尝试
echo${#foo}
@devnull它可能是未分配的,但我不确定这是否是更大脚本的一部分。为了安全,我得说我喜欢使用printf。这花了一些时间,但现在我看到printf将为传递给它的每个参数重复它的格式字符串(如果参数多于可替换的%parameters)。%.0s会吃掉一个参数,但会将其作为0长度添加到输出中。尽管有点模糊,但我认为这是一个比我介绍的yes | head | xargs | sed | cut更好的解决方案。我得说我喜欢printf的这种用法。这花了一些时间,但现在我看到printf将为传递给它的每个参数重复它的格式字符串(如果参数多于可替换的%parameters)。%.0s会吃掉一个参数,但会将其作为0长度添加到输出中。尽管有点模糊,但我认为这是一个比我提出的“yes | head | xargs | sed | cut”更好的解决方案。