GNU/Linux >> Tutoriels Linux >  >> Linux

utiliser random pour générer une chaîne aléatoire dans bash

Utilisez l'expansion des paramètres. ${#chars} est le nombre de caractères possibles, % est l'opérateur modulo. ${chars:offset:length} sélectionne le(s) caractère(s) à la position offset , c'est-à-dire 0 - longueur($chars) dans notre cas.

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

Une autre façon de générer une chaîne hexadécimale de 32 octets (par exemple) :

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

ajouter -u si vous voulez des caractères majuscules à la place.


Pour ceux qui recherchent une chaîne alphanumérique aléatoire dans bash :

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

La même chose qu'une fonction bien documentée :

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. 10 façons de générer un mot de passe aléatoire sous Linux

  2. Utilisation d'une référence à une variable de chaîne Bash dans Sed ?

  3. Utilisation de la commande Linux Sleep dans les scripts Bash

  4. Comment diviser une chaîne dans un script bash

  5. 8 façons de générer un mot de passe aléatoire sous Linux

Chaînes de concaténation bash

Comment vérifier si une chaîne contient une sous-chaîne dans Bash

Remplacement de chaîne dans Bash

Script Bash - Manipulation de chaînes

Utilisation de la commande Bash printf pour imprimer des sorties formatées

Que fait 'bash -c' ?