Linux 如何在bash中复制字符串?
我在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 ]
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”更好的解决方案。