GNU/Linux >> Belajar Linux >  >> Linux

menggunakan acak untuk menghasilkan string acak di bash

Gunakan ekspansi parameter. ${#chars} adalah jumlah karakter yang mungkin, % adalah operator modulo. ${chars:offset:length} memilih karakter pada posisi offset , yaitu 0 - length($chars) dalam kasus kita.

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

Cara lain untuk menghasilkan 32 byte (misalnya) string heksadesimal:

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

tambahkan -u jika Anda menginginkan karakter huruf besar.


Bagi mereka yang mencari string alfanumerik acak di bash:

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

Sama seperti fungsi yang terdokumentasi dengan baik:

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. Menggunakan Bash untuk otomatisasi

  2. Menggunakan Referensi Ke Variabel Bash String Di Sed?

  3. Penggantian String Menggunakan Kamus?

  1. Menggunakan Perintah Tidur Linux di Skrip Bash

  2. Cara Memisahkan String dalam Skrip Bash

  3. 8 cara untuk menghasilkan kata sandi acak di Linux

  1. Bash Seri Pemula #9:Menggunakan Fungsi di Bash

  2. Konversikan string teks dalam bash ke array

  3. Apa yang dilakukan 'bash -c'?