Schleife in einem bash Skript erstellen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Guten Abend @all,

    ich versuche seit einiger Zeit eine Schleife in einem BashSkript zu erstellen, die die folgende Aufgabe hat: Es sollen alle Kombinationen aus den beiden Zahlen 1 und 0 in einem File ausgegeben werden. Die Kombinatationen aus den beiden Zahlen sollen immer 5-stellig sein...

    Beispiel:

    00000
    00001
    00011
    00010
    00100
    ....
    11111

    Kann mir hier jemand helfen?

    Danke u. Gruß

    M.

    Einmal editiert, zuletzt von Micky (1. Mai 2015 um 17:51)

  • Hallo,

    das wären dann quasi die binären Zahlen von 0-31:

    Code
    #! /bin/bash
    
    
    binary=({0..1}{0..1}{0..1}{0..1}{0..1})
    for ((i=0; i<=31; i++));do
            echo ${binary[$i]}
    done

    Oder wers' mathematisch mag:

  • Eine andere Variante wäre noch

    Code
    #! /bin/bash
    
    
    for ((i=0; i<=31; i++));do
       v=$(echo "obase=2; $i" | bc)
       printf "%05d\n" $v
    done


    aber die erste mit dem initialisierten Array ist doch noch die eleganteste Methode :thumbs1:

  • framp Ich hab auch gleich an bc mit obase=2 gedacht. :)

    Code
    printf "%05d\n" $(echo "obase=2; $(seq 31)" | bc)

    Aber die erste Variante von Julian gefällt mir auch am besten. Echt genial! (Hab ehrlich gesagt ne ganze weile gebraucht das zu verstehen) :)

    EDIT: Wenn es um geschwindigkeit geht hab ich wohl gewonnen :baeh2: :lol::lol: (Auch wenn es nur ein paar Millisekunden im Vergleich zu Julians Lösung sind - ich: real - 0m0.105s, Julian: real - 0m0.133s)

    Schöne Grüße,
    Joh

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (1. Mai 2015 um 19:34)

  • Über das Prinzip vom ersten bin ich mal im Netz gestolpert. Der entsprang nicht meinen Gedanken, find ihn aber auch klasse.
    Habe eben mal die Zahlen bis 4095 durch alle Varianten laufen lassen:

    -Der erste braucht <1 Sekunde
    -Der zweite ~32 Sekunden (ist ja auch kein Wunder ;) )

    Was ich nicht ganz nachvollziehen kann:
    Wieso benötigt die Version von framp ganze 21 Sekunden, wohingegen joh's ~1 Sekunde braucht?

    Sind sich doch sehr ähnlich :denker: Ist seq so viel effektiver als die Schleife?

  • ...Aber die erste Variante von Julian gefällt mir auch am besten. Echt genial! (Hab ehrlich gesagt ne ganze weile gebraucht das zu verstehen) :)...

    Hat bei mir auch ein wenig gedauert :)

    ...Wieso benötigt die Version von framp ganze 21 Sekunden, wohingegen joh's ~1 Sekunde braucht?

    Bei meiner Loesung wird jedesmal bc neu aufgerufen. Bei joh.raspi nur einmal und die 'Schleife' wird von bc abgearbeitet

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!