GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden von random zum Generieren einer zufälligen Zeichenfolge in Bash

Parametererweiterung verwenden. ${#chars} ist die Anzahl der möglichen Zeichen, % ist der Modulo-Operator. ${chars:offset:length} wählt das/die Zeichen an Position offset aus , d.h. 0 - length($chars) in unserem Fall.

chars=abcd1234ABCD
for i in {1..8} ; do
    echo -n "${chars:RANDOM%${#chars}:1}"
done
echo

Eine andere Möglichkeit, eine (zum Beispiel) 32-Byte-Hexadezimalzeichenfolge zu generieren:

xxd -l 32 -c 32 -p < /dev/random

-u hinzufügen wenn Sie stattdessen Großbuchstaben wünschen.


Für diejenigen, die nach einer zufälligen alphanumerischen Zeichenfolge in Bash suchen:

LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 64

Dasselbe wie eine gut dokumentierte Funktion:

function rand-str {
    # Return random alpha-numeric string of given LENGTH
    #
    # Usage: VALUE=$(rand-str $LENGTH)
    #    or: VALUE=$(rand-str)

    local DEFAULT_LENGTH=64
    local LENGTH=${1:-$DEFAULT_LENGTH}

    LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c $LENGTH
    # LC_ALL=C: required for Mac OS X - https://unix.stackexchange.com/a/363194/403075
    # -dc: delete complementary set == delete all except given set
}

Linux
  1. Verwenden von Bash für die Automatisierung

  2. So generieren Sie ein zufälliges Passwort unter Linux mit /dev/random

  3. Verwenden des Linux-Sleep-Befehls in Bash-Skripten

  4. Bash-Anfängerserie Nr. 9:Verwenden von Funktionen in Bash

  5. Verwenden von Case-Anweisungen in Bash

Bash Strings verketten

So prüfen Sie, ob eine Zeichenfolge in Bash eine Teilzeichenfolge enthält

Ersetzen von Zeichenfolgen in Bash

Bash-Scripting – String-Manipulation

Verwenden des Bash-printf-Befehls zum Drucken formatierter Ausgaben

Was macht 'bash -c'?