GNU/Linux >> Znalost Linux >  >> Linux

pomocí náhodného vygenerování náhodného řetězce v bash

Použijte rozšíření parametrů. ${#chars} je počet možných znaků, % je modulo operátor. ${chars:offset:length} vybere znak(y) na pozici offset , tedy v našem případě 0 - length($chars).

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

Další způsob, jak vygenerovat 32 bajtový (například) hexadecimální řetězec:

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

přidejte -u chcete-li místo toho velká písmena.


Pro ty, kteří hledají náhodný alfanumerický řetězec v bash:

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

Totéž jako dobře zdokumentovaná funkce:

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. 8 způsobů, jak vygenerovat náhodné heslo v Linuxu

  2. Pole v Bash nenalezeno

  3. Jak napsat víceřádkový řetězec pomocí Bash s proměnnými?

  1. Použití odkazu na proměnnou bashového řetězce v Sed?

  2. Převeďte textový řetězec v bash na pole

  3. Co dělá 'bash -c'?

  1. 10 způsobů, jak vygenerovat náhodné heslo v Linuxu

  2. Použití Bash pro automatizaci

  3. Jak rozdělit řetězec ve skriptu Bash