was passiert hier?

  • Hallo,


    ich habe hier eine kleine, peinliche Frage. Habe in einem Bash-Script die nachfolgende Stelle gefunden und verstehe nicht ganz, was da abgeht. Könnte mich jemand aufklären. Bitte auch Sinn / Unsinn der Passage kundtun.


    # (echo "test"; echo "test") | echo "Was läuft hier?!"


    Dass das "test" hier 2x auftaucht, ist Absicht. Aber wie gesagt, kein Plan, was hier läuft :unsch


    TIA!

  • hi,


    die klammer stellt eine subshell dar. die befehle werden einfach nacheinander abgearbeitet und als gesamtergebnis an die aufrufende shell übergeben.
    damit kann mann coole sachen machen wie


    cd /ZIEL; (cd QUELLE; find . -print | cpio -oB ) | cpio -ivdBum


    zum kopieren eines ganzen verzeichnisbaums (inkl. Specialfiles und so, sonst geht sicher ein "cp -r", also kein gemecker!)


    gruss

  • Zitat

    Original von killajoe


    # (echo "test"; echo "test") | echo "Was läuft hier?!"


    Aber wie gesagt, kein Plan, was hier läuft :unsch


    Da läuft nichts, da die Zeile durch '# ..' zum Kommentar wird.


    Gruß
    e9hack

  • Zitat

    Original von e9hack
    Da läuft nichts, da die Zeile durch '# ..' zum Kommentar wird.


    Und wenn man das # weglässt passiert auch nicht viel, weil die Subshell wartet bis sie ihre Ausgaben loswerden kann, aber das (dritte) echo liest ja nichts von stdin. Ersetzt man es durch einen Befehl, der von stdin liest (z.B. tail) dann gibt es auch etwas aus (nämlich 2x test)

  • Vielen Dank für die Anworten. Jetzt verstehe ich auch die Passage, denn damit gibt sie wirklich Sinn:


    # (echo "newpassword"; echo "newpassword"; echo "newpassword") | passwd root


    Bei zu simplen Passwörtern muss man das Ding 3x angeben...


    Sorry, wegen #. Wollte hiermit eigentlich nur die Shell andeuten :schiel

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!