Hvordan sette bash-variabler til tilfeldige tall

How Set Bash Variables Random Numbers

Du kan enkelt generere et tilfeldig tall ved bash-ledeteksten, som du deretter kan bruke til å angi nummeret som en variabel. Dette er nyttig for alt fra å skrive bestemte typer manus til å kjøre bordspillrollespill. Enten du skriver en D&D-kampanje eller skriver et verktøy på det kraftige bash-språket, kan du vanligvis komme unna med en enkelt linje med kode. Dette er også et veldig nyttig verktøy når du prøver å forme visse sikkerhetskontroller, men du vil huske at gode kjeks kan omgå disse enkle nummergeneratorene. De er fremdeles nyttige for å generere visse typer passord og kode, noe som kan bidra til å holde ting trygt uansett.

Det er noen forskjellige måter å oppnå dette på, og ikke alle teknikker passer for enhver situasjon, så vi gjorde vårt beste for å se på hver vei og testet den for å sikre at den fungerte. Du må jobbe fra en terminal for dette, så bruk Ctrl + Alt + T eller Super (Windows) + T for å åpne en grafisk terminal, start en ved å skrive terminal i Dash, velg den fra Application eller Whisker og Systemverktøy-menyer eller gå til en virtuell terminal for alvor ved å bruke Ctrl, Alt og en nøkkel mellom F1 og F6.



Metode 1: Plukke en full tilfeldig byte

Du kan generere et tilfeldig tall mellom 1 og 256 ved å kjøre følgende kommando direkte fra bash-ledeteksten:

av -An -N1 -tu1 / dev / urandom

Selv om du noen ganger ser denne kommandoen referert til / dev / random i stedet for / dev / urandom, vil du sannsynligvis ikke løpe på denne måten. Dette kan utilsiktet frarøve andre programmer fra å kunne bruke den tilfeldige frøgeneratoren mens du bruker den. Når du har kjørt programmet og fått et nummer, kan du være sikker på at det også fungerer på denne måten:

ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom)))

Dette vil sette variabelen ranNum til et tall mellom 1 og 256, valgt på det tidspunktet du kjører den. Du kan kjøre den fra kommandolinjen eller fra innsiden av et skript, og det skal fungere på begge måter. Husk at du kan erstatte ranNum med et hvilket som helst gyldig variabelnavn.

Metode 2: Angi en variabel til et tilfeldig tall mellom 1 og hva som helst

Du kan kjøre ekko $ [RANDOM% 40 + 1] fra kommandolinjen for å sende et tilfeldig tall mellom 1 og 40 rett til standardutgang, men du kan også erstatte 40 i kommandoen med nesten hvilket som helst tall. Til slutt vil vertsmaskinens arkitektur gå tom for sifre eller kanskje bash vil, men det er tvilsomt at du trenger et så høyt tall uansett.

La oss anta at du vil generere et tilfeldig tall mellom 1 og 10 for den variable konfigurasjonen. Du kan løpe:

ranNum = $ [RANDOM% 10 + 1]

Husk at du kan erstatte 10 med hvilken øvre verdi du vil ha. Denne verdien er inkludert, noe som betyr at 10 er en gyldig returnert figur. Hvis du ønsket å redusere den med en, kan du bare lage verdien 9 i stedet for å bruke C eller C ++ stil -1 matematikk. Disse er unødvendige når du angir en variabel ved hjelp av denne metoden, og de vil faktisk generere uventede resultater ved å legge til eller trekke fra sifre.

Metode 3: Velge en enkelt tilfeldig bit

Hvis du trenger å sette en variabel til en tilfeldig bit på enten null eller en, kan det være lurt å endre forrige kode som følger:

ranNum = $ (($ (od -An -N1 -i / dev / urandom)% 2))

Denne koden vil sette ranNum til enten 1 eller 0, avhengig av om tallene den samplet fra / dev / urandom filen var jevn eller merkelig. Dette kan være nyttig hvis du trenger å sette et enkelt ja eller nei-ligning til den ene eller den andre tilstanden.

Hvis dette ikke er tilstrekkelig tilfeldig for det du jobber med, kan du få et litt mer tilfeldig nummer ved å ringe til / proc / sys / kernel / random katalog med:

ranNum = $ ((0x $ (kutt -c1-1 / proc / sys / kjerne / tilfeldig / uuid)% 2))

Nok en gang vil dette imidlertid bare sette variabelen til 1 eller 0, noe som er perfekt for binær logikk, men ikke så nyttig for tider når du kanskje trenger et lengre tall. Du kan imidlertid bruke noen av disse linjene i et bash-skript hvis du har behov for det. Dette andre alternativet kan faktisk være bedre for situasjoner der den første mislykkes også

Metode 4: Forfatter bash-skript for å returnere tilfeldige tall

Hvis du når som helst vil ha et praktisk verktøy for å generere et tilfeldig tall, kan du opprette et kommandolinjeskript for å gjøre det. Dette bruker ikke mer enn det standard bash-språket de fleste moderne Linux-instruksjoner har, så stort sett enhver moderne Linux-distribusjon, og ganske mange av de BSD-baserte operativsystemene burde takle dette helt fint. Det kan være lurt å bruke cd ~ / .local / bin før du går videre for å forsikre deg om at du har skriptet ditt et sted du kan utføre det fra hvor som helst.

Skriv nano tilfeldig eller vi tilfeldig for å begynne, selv om du kan bruke et annet navn for skriptet ditt hvis du vil. Du kan også bruke en annen tekstredigerer hvis du foretrekker det. Si at du ønsket å lage en som ville returnere enten 1 eller 0 når du ble skrevet på kommandolinjen. Skriv inn følgende og trykk deretter Ctrl + O for å lagre det hvis du bruker nano:

#! / bin / bash ranNum = $ (($ RANDOM% 2)) ekko $ ranNum

Skriv Ctrl + X for å avslutte tekstredigereren, og bruk chmod + x tilfeldig for å gjøre skriptet ditt brukbart igjen på kommandolinjen. Du kan selvfølgelig bruke ranNum = $ [RANDOM% 10 + 1], ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) eller en hvilken som helst annen linje i stedet for ranNum = $ (($ RANDOM% 2)) slik at du kan kontrollere nøyaktig hva slags nummer du vil ha tilbake. La oss si at du ønsket å velge et tall mellom 1 og 50 regelmessig. Endre bash-skriptets tekst til:

#! / bin / bash ranNum = $ [RANDOM% 50 + 1] ekko $ ranNum

Du kan nå enkelt kjøre den fra kommandolinjen ved å skrive tilfeldig når du vil generere et tilfeldig tall.

4 minutter lest