【发布时间】:2019-07-01 22:47:48
【问题描述】:
我在 bash 中有以下字符串
str="kallel"
我想从str 和str2 创建。 str2 包含 str 重复直到长度 = 20。所以结果应该是这样的:
str2="kallelkallelkallelka"
在 bash 中怎么做?
【问题讨论】:
我在 bash 中有以下字符串
str="kallel"
我想从str 和str2 创建。 str2 包含 str 重复直到长度 = 20。所以结果应该是这样的:
str2="kallelkallelkallelka"
在 bash 中怎么做?
【问题讨论】:
$ 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
【讨论】:
这应该可行:
str="kallel"
str2="${str}"
while (( ${#str2} < 20 ))
do
str2="${str2}${str}"
done
str2="${str2:0:20}"
【讨论】:
str2="${str}") 是多余的。
${str}) 的值分配为第二个变量 (str2) 的初始值...它将循环计数减少一并覆盖之前的任何值 str2 可能有有,避免明确的str2=""...
str2 未分配,因此长度为零。试试echo ${#foo}。
我会亲自进行一段时间循环,然后在最后将其剪切。
当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`
【讨论】:
while [ ${#stringZ} -le 20]line 35: [: missing ]'`
20 之后和] 之前应该有一个空格。固定。
$stringZ的长度总是会返回相同的数字,因为循环只修改$str2而不是$stringZ...
我 100% 窃取了 Bash : Duplicate a string variable n times 的这个答案,但我认为它很无聊(尽管是一个 6 岁的问题):
$ yes "kallel" | head -20 | xargs | sed 's/ //g' | cut -c1-20
kallelkallelkallelka
【讨论】: