【问题标题】:How to generate a random string in bash?如何在bash中生成随机字符串?
【发布时间】:2023-03-19 22:18:01
【问题描述】:

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

str=random_string(n scharacters)

我已经设法做到了以下几点:

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

问题在于str 也包含新行。

你有什么想法吗?

【问题讨论】:

  • 我之前看到过,但我的目标不是打印字符串。我的目标是将它存储在一个变量中。这可能很容易做到,但我完全是 bash 的业余爱好者,我不知道该怎么做。
  • My goal is to store it in a variable. 太棒了。 variable=$(whatever; while (..); here; done; you want)?
  • 有一个几乎确切的duplicate,但这里的问题似乎是生成字符串,而不是随机字符。

标签: string bash random


【解决方案1】:

这可能是您正在寻找的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 2010-09-10
    • 2011-01-09
    相关资源
    最近更新 更多