Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

BASH, random testiranje više uslova, izlaz na prvom uspešnom.

  • 8 odgovora
  • 60.708 pregleda

Najnovija ↓

BASH, random testiranje više uslova, izlaz na prvom uspešnom. 21.06.2016. u 03:07 · pre 126 meseci #1
Imam nekoliko uslova koje treba da testiram i pri prvom uspešnom preduzmem radnje a ostali se zanemariju:

Code:
if a; then trt
elif b; then prd
elif c; then kak
else jbg


Medjutim, to treba da uradim random redosledom, kako ne bi uvek isti uslov 'a' bio prvi u testiranju.

E, nemam ideju kako to da uradim a da bude kompaktno i elegantno.
Re: BASH, random testiranje više uslova, izlaz na prvom uspešnom. 21.06.2016. u 10:59 · pre 126 meseci
izmenjeno 1 put, poslednji put jablan 21.06.2016. u 11:12
  1. jablan21.06.2016. u 11:12zapis iz teksta poruke
#3
Code:
#!/bin/bash
( $(exit $(( (RANDOM % 4) ))) && echo 'foo' ) || ( $(exit $(( (RANDOM % 4) ))) && echo 'bar' ) || ( $(exit $(( (RANDOM % 4) ))) && echo 'baz' ) || echo 'fee'


nek proveri neko ko se bavi shell scriptingom.

A pre toga pročitaj ovo: http://mywiki.wooledge.org/XyProblem i reci koji problem želiš da rešiš, a ne kako misliš da ga rešiš.
Sviđa mi se1
Re: BASH, random testiranje više uslova, izlaz na prvom uspešnom. 21.06.2016. u 14:56 · pre 126 meseci #4
Nije ista logika, kod tebe je svaka provera uslova random a meni treba samo random redosled a ne random provera.

Drugim rečima kod tebe može da se desi da se 'jbg' dobije i ako su sva tri uslova ispunjena, ako tako random odluči :)

'jbg' je uvek na kraju, 'trt' je uvek akcija za 'a', 'prd' je uvek akcija za 'b', a 'kak' je uvek za 'c', i svi uslovi moraju da se provere pre nego što se uradi 'jbg' jer je 'jbg' jako loša stvar :D

Problem je lepo opisan, još samo da nađem lepo rešenje ;).

Problem je u stvari prost, imam 3 voip tranka i preko nekog od njih treba da prosledim poziv, ako ne radi neki idem na sledeći, i tako do 'jbg' odustajanja. Međutim ne želim da pozivi uvek idu preko 'a' tranka, već da se sve svaki put proverava random redosledom.

Re: BASH, random testiranje više uslova, izlaz na prvom uspešnom. 21.06.2016. u 15:08 · pre 126 meseci #5
Mislim da pred bash postavljaš malo previsoke zahteve. Tj, i kad budeš uspeo da uradiš to što hoćeš, taj kod neće moći niko živ posle toga da održava. Predlažem ti da to što ti treba napišeš u nekom poštenom skripting jeziku, dakle perl, python ili ruby, u kojima je to što hoćeš trivijalno za napisati. Ako se odlučiš za ruby, mogu da ti pomognem.
Re: BASH, random testiranje više uslova, izlaz na prvom uspešnom. 21.06.2016. u 17:20 · pre 126 meseci
izmenjeno 1 put, poslednji put jablan 21.06.2016. u 17:34
  1. jablan21.06.2016. u 17:34zapis iz teksta poruke
#7
Verovatno može kraće, ali ideja je:

Code:

import random

arr = [
        ( lambda: random.random() > 0.5,
            'foo'
            ),
        ( lambda: random.random() > 0.5,
            'bar'
            ),
        ( lambda: random.random() > 0.5,
            'baz'
            )
        ]

random.shuffle(arr)

for uslov, akcija in arr:
    if uslov():
        print(akcija)
        break


dosta zavisi u kom su ti obliku uslovi i akcije koje imaš, ali je ideja ta da imaš niz nečega (VOIP trankova npr), i svaki put ga promešaš pre nego što kreneš da iteriraš.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme