我的目标是在 bash 中有这样的东西:
str=random_string(n scharacters)
我设法做到了以下几点:
chars=abcdefghijklmnopqrstuvwxyz
for (( i=1; i<=n; i++ ))
do
str="${chars:RANDOM%${#chars}:1}"
done
问题是str它还包含新行。
你有什么想法?
这可能是您正在寻找的:
#!/bin/bash
chars='abcdefghijklmnopqrstuvwxyz'
n=10
str=
for ((i = 0; i < n; ++i)); do
str+=${chars:RANDOM%${#chars}:1}
# alternatively, str=$str${chars:RANDOM%${#chars}:1} also possible
done
echo "$str"
您的代码几乎是正确的,只是您错过了+=操作员。+=运算符附加到变量(str此处)的先前值。bash该运算符是在3.1 版中引入的。顺便说一句,它也可以应用于数组变量,以便将新元素附加到数组中。还必须注意,在算术上下文中,运算符右侧的表达式+=被计算为算术表达式并添加到变量的当前值。