Hur man ställer in bash-variabler till slumpmässiga nummer



Prova Vårt Instrument För Att Eliminera Problem

Du kan enkelt skapa ett slumpmässigt tal vid bash-prompten, som du sedan kan använda för att ställa in nämnda nummer som en variabel. Detta är användbart för allt från att skriva vissa typer av skript till att köra bords-rollspel-äventyr. Oavsett om du skriver en D & D-kampanj eller författar ett verktyg på det kraftfulla bash-språket, kan du vanligtvis komma undan med en enda kodrad. Detta är också ett mycket användbart verktyg när du försöker forma vissa säkerhetskontroller, men du vill komma ihåg att bra smällare kan kringgå dessa enkla nummergeneratorer. De är fortfarande användbara för att skapa vissa typer av lösenord och kod, vilket kan hjälpa till att hålla saker säkra ändå.



Det finns några olika sätt att åstadkomma detta, och inte varje teknik är rätt för alla situationer, så vi gjorde vårt bästa för att ta en titt på varje väg och testade den för att säkerställa att den fungerade. Du måste arbeta från en terminal för detta, så använd antingen Ctrl + Alt + T eller Super (Windows) + T för att öppna en grafisk terminal, starta en genom att skriva terminal i Dash, välj den från Application eller Whisker och Systemverktyg-menyer eller gå till en virtuell terminal på allvar genom att använda Ctrl, Alt och en tangent mellan F1 och F6.



Metod 1: Välj en fullständig slumpmässig byte

Du kan generera ett slumpmässigt tal mellan 1 och 256 genom att köra följande kommando direkt från bash-prompten:



av -An -N1 -tu1 / dev / urandom

Även om det här kommandot ibland kan hänvisas till / dev / random istället för / dev / urandom, kommer du förmodligen inte att springa på det här sättet. Detta kan oavsiktligt beröva andra program från att kunna använda den slumpmässiga frögeneratorn under din användning av den. När du har kört programmet och fått ett nummer kan du vara säker på att det också fungerar så här:



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

Detta kommer att ställa in variabeln ranNum till ett tal mellan 1 och 256, vald vid den tidpunkt du kör den. Du kan köra den från kommandoraden eller från insidan av ett skript och det ska fungera på något sätt. Tänk på att du kan ersätta ranNum med valfritt variabelt namn.

Metod 2: Ställa in en variabel till ett slumpmässigt tal mellan 1 och vad som helst

Du kan köra echo $ [RANDOM% 40 + 1] från kommandoraden för att skicka ett slumpmässigt tal mellan 1 och 40 direkt till standardutgången, men du kan också ersätta 40 i kommandot med praktiskt taget vilket nummer som helst. Så småningom kommer din värdmaskins arkitektur att ta slut på siffror eller kanske bash kommer, men det är tveksamt att du behöver ett så stort antal ändå.

Låt oss anta att du vill skapa ett slumpmässigt tal mellan 1 och 10 för din variabla konfiguration. Du kan springa:

ranNum = $ [RANDOM% 10 + 1]

Tänk på att du kan ersätta 10 med vilket övre värde du vill ha. Detta värde är inklusive, vilket betyder att 10 är en giltig returnerad siffra. Om du ville minska det med en, gör bara värdet 9 istället för att använda C eller C ++ stil -1 matematik. Dessa är onödiga när du ställer in en variabel med den här metoden och de genererar faktiskt oväntade resultat genom att lägga till eller subtrahera siffror.

Metod 3: Välja en enda slumpmässig bit

Om du behöver ställa in en variabel till en slumpmässig bit av antingen noll eller en, kanske du vill ändra föregående kod enligt följande:

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

Den här koden ställer in ranNum till antingen 1 eller 0 beroende på om siffrorna som den samplade från / dev / urandom filen var jämn eller udda. Detta kan vara användbart om du behöver ställa in ett enkelt ja eller nej-ekvation till ett eller annat tillstånd.

Om detta inte är tillräckligt slumpmässigt för det du jobbar med kan du få ett lite mer slumpmässigt nummer genom att ringa till katalogen / proc / sys / kernel / random med:

ranNum = $ ((0x $ (klipp -c1-1 / proc / sys / kärna / slumpmässig / uuid)% 2))

Återigen kommer detta dock bara att sätta variabeln till 1 eller 0, vilket är perfekt för binär logik men inte lika användbart för tider när du kanske behöver ett längre nummer. Du kan dock använda någon av dessa rader i ett bash-skript om du hade något behov av att göra det. Det andra alternativet kan faktiskt vara bättre för situationer där det första misslyckas också

Metod 4: Skapa bash-skript för att returnera slumpmässiga nummer

Om du vill ha ett praktiskt verktyg för att generera ett slumpmässigt nummer när som helst kan du skapa ett kommandoradsskript för att göra det. Detta använder inget mer än det vanliga bash-språket som de flesta moderna Linux-uppmaningar har, så i stort sett alla moderna Linux-distributioner och en hel del av de BSD-baserade operativsystemen borde hantera det här bra. Du kanske vill använda cd ~ / .local / bin innan du går vidare för att se till att du har ditt skript på en plats där du kan köra det var som helst.

Skriv nano slumpmässigt eller vi slumpmässigt för att börja, men du kan använda ett annat namn för ditt skript om du vill. Du kan också använda en annan textredigerare om du föredrar det. Säg att du ville skapa en som skulle returnera antingen 1 eller 0 när du skriver på kommandoraden. Ange följande och tryck sedan på Ctrl + O för att spara det om du använder nano:

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

Skriv Ctrl + X för att avsluta textredigeraren och använd chmod + x slumpmässigt en gång till på kommandoraden för att göra ditt skript användbart. Du kan naturligtvis använda ranNum = $ [RANDOM% 10 + 1], ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) eller någon annan rad istället för ranNum = $ (($ RANDOM% 2)) så att du kan kontrollera exakt vilken typ av nummer du vill ha tillbaka. Låt oss säga att du ville välja ett nummer mellan 1 och 50 regelbundet. Ändra bash-skriptets text till:

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

Du kan nu enkelt köra den från kommandoraden genom att skriva slumpmässigt när du vill skapa ett slumptal.

4 minuter läst