1

我的目标是在 bash 中有这样的东西:

str=random_string(n scharacters)

我设法做到了以下几点:

chars=abcdefghijklmnopqrstuvwxyz
for (( i=1; i<=n; i++ ))
do
   str="${chars:RANDOM%${#chars}:1}"
done

问题是str它还包含新行。

你有什么想法?

4

1 回答 1

4

这可能是您正在寻找的:

#!/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 版中引入的。顺便说一句,它也可以应用于数组变量,以便将新元素附加到数组中。还必须注意,在算术上下文中,运算符右侧的表达式+=被计算为算术表达式并添加到变量的当前值。

于 2021-03-03T16:24:56.853 回答