我的目标是在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
)的先前值。此操作符是在3.1版本的bash
中引入的。顺便提一下,它也可以应用于数组变量,以便将新元素附加到数组。还必须注意,在算术上下文中,+=
运算符右侧的表达式作为算术表达式求值,并添加到变量的当前值中。