wie kann ich ein shell script per shell per echo erstellen?

  • hallo wie kann ich mit dem echo befehl ausrufezeichen in eine datei schreiben, ich weiß mit > aber ich möchte diese zeile eingeben bekomme aber einen fehler :/
    der befehl in den anführungszeichen soll in die datei geschrieben werden, weiß das jemand von euch? *:*


    Code
    echo "#!/bin/bash" > sh-ersteller.sh
  • Hallo,


    noflow: ist die Umschalten-Taste deiner Tastatur kaputt? Im deutschen gibt es nun mal lästigerweise Groß- / Kleinschreibung. Erhöht aber die Lesbarkeit deines Beitrags deutlich.


    Wenn du eine bestehende Datei nicht-interaktiv modifizieren willst, dann ist sed die bessere Wahl.


    Gruß, noisefloor

  • noflow

    also mir das sc hnurz Gross oder klein.

    kenn das wenn man von US FR usw auf DE switcht da sind Fehler normal

    zu deinem echo Problem : wie schon oben gesagt single oder double, maskieren usw

    ist auch verschieden je nach shell die du benutzt meist sind die Tips hier für bash, bei sh zsh ksh ... kann das variieren

    :)

  • Hallo,


    Quote


    ich denke hier im Forum ist die Großkleinschreibung nicht so wichtig wie wo anders.

    Falsch gedacht. Heißt Tipp: wenn du dir weniger Gedanken darum machen willst -> nutz' ein englischsprachiges Forum. Sprachbedingt wird da mehr klein geschrieben.


    Quote


    was meinst du mit unteraktiv genau?

    Typo - soll "interaktiv" heißen....

    sed ist ja eine Editor, der nicht-interaktiv arbeitet. Heißt, es öffnet sich kein Fenster wie z.B. bei nano, wo du dann interaktiv was editierst, sondern du gibts sed einen Befehl mit und die Datei wird nicht-interaktiv editiert.

    Der Vorteil von sed gegenüber Umleitungen ist, dass du sed gezielt sagen kann, welche Zeile zu editieren ist.


    Gruß, noisefloor

  • Über Groß kleinschreibung mache ich mir nicht nur weiterhin Gedanken, ich habe sogar Leute im Chat getroffen die sowas wie siri zum Chaten nutzen, beim schreien wird dann einfach alles groß geschrieben ^^ und wenn siri was nicht lesen kann dann wird man auch mal gesperrt ^^...


    Mein script sieht nun so aus:

    Bash
    #!/bin/bash
    read -p "wie soll das skript.sh heiszen?: " var
    echo '#!/bin/bash' > $var.sh
    echo 'echo Willkommen Zurrück bei $var.sh' >> $var.sh
    chmod +x $var.sh
    ./$var.sh

    und lader wird die $var.sh in quotes nicht auf gelöst, lusitg und auch garnicht schlimm :D

    Willkommen Zurrück bei .sh

    sed werde ich auf jedenfall ausprobieren, ich werde heute nur sed manual lesen.

    • Official Post

    gewöhnen wir uns doch einfach alle aus faulheit an nur noch klein zu schreiben und ohne satzzeichen zu verwenden wozu die mühe machen hat doch eh keinen sinn man kann doch alles lesen oder wir geben uns in zukunft gleichviel mühe bei der lösungsfindung mit unseren antworten wie ein to mit seiner frage :fies:


    Bisher ist mir nur ein User bekannt, dem ich das krankheitsbedingt, unkommentiert durchgehen lassen würde.

  • Hallo,


    noflow: was ist eigentlich der tiefere Sinn des ganzen? Das Beispiel ist ja nur... sagen wir mal sehr begrenzt sinnvoll.

    Wenn du X mal das gleiche Skript mit anderen Namen haben willst, dann leg' dir doch (Hard oder Soft) Links an, das ist sinnvoller.


    Gruß, noisefloor

  • gewöhnen wir uns doch einfach alle aus faulheit an

    warum soll dein vorschlag denn für alle sein?

    noflow: was ist eigentlich der tiefere Sinn des ganzen? Das Beispiel ist ja nur... sagen wir mal sehr begrenzt sinnvoll.

    Wenn du X mal das gleiche Skript mit anderen Namen haben willst, dann leg' dir doch (Hard oder Soft) Links an, das ist sinnvoller.

    1) Spass am programmeiren und an linux

    2)wollte ich javaScript karteikarten machen und die funktionen aus dieser referec filtern http://overapi.com/javascript

    ich habe auch ein w3m script geschrieben und die seiten runtergeldane , dabe habe ich schon mal entdeckt das alle beispiel codes bei git sind, die Git Adresse habe ich auch den HTML Seinten: https://github.com/mdn/interac…live-examples/js-examples.

    jetzt fehlt mit nur noch die beschreibenung aus der reference, aber die sind nicht in den selben DOM TAGs, ist von Befehl zu Befehl anderes


    hab hier noch einen tree ausschnitt, wie ich diese Idee strukturiert habe :P


  • Danke für die Erklärung. Nur ist mir daraus immer noch überhaupt nicht klar, warum und wo ein Bash-Skript ein andere Bash-Skript erzeugen soll.

    Einfach um 3 Zeilen Tippabeit zu sparen.

    es muss erstellt werden

    es muss ausführbargemacht werden

    und die initialisirungs Zeile muss auch noch eingetragen werden


    lieben Gruß, noflow

    • Official Post

    warum soll dein vorschlag denn für alle sein?

    Das war kein Vorschlag, ich habe nur laut gedacht. Ich finde es enfach nur respektlos den potentiellen Helfern und der Nachwelt gegenüber.


    Klar könnte ich nun mit Kanonen auf Spatzen schießen, Dir den Hammer zeigen (:richter:) und Deinen Thread einfach schließen, weil Du Dich respeklos verhälst und nach mehreren aufforderungen Deine Schreibweise nich geändert hast, aber ich hoffe nach wie vor, dass Du eine gewisse Einsicht zeigst und an der Denkweise etwas veränderst. Chat != Forum!

  • ...ich hoffe nach wie vor, dass Du eine gewisse Einsicht zeigst und an der Denkweise etwas veränderst. Chat != Forum!

    Ich bin einverstanden und werde mir mehr Zeit für meine Beiträge nehmen.

    Heute gibt es tolle Seiten zu lernen, ich kann nachvollziehen das die Nachwelt, in leserlichen Texten, besser recherchieren kann.

    Mir ist nicht ganz klar wie man aus dem Forum besseres Lernmaterial zusammen stellen kann, aber ich habe auch nicht vor zu sabotieren

    .

  • Es gibt ein nettes bash Feature called here document. Damit laesst sich alles ganz einfach erschlagen ;)

    Bash
    #!/bin/bash
    TEMP_SCRIPT="/tmp/helloWorld"
    echo "Creating bash script ..."
    cat << EOF > $TEMP_SCRIPT
    #!/bin bash
    echo "Hello world from script created from bash"
    EOF
    echo "Calling created bash script ..."
    bash $TEMP_SCRIPT

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

  • Hallo framp, ich habe herrausgefunden dass, man Scripte mit dem Befehl "source" ausführen kann, ohne die Datei ausführbar machen zu müssen.

    Man kann source oder einne Punkt gefolgt von einem Leerzeichen eingeben.

    Code
    /tmp $ echo 'echo hallo' >test.sh
    /tmp $ source test.sh
    hallo 
    /tmp $. test.sh
    hallo 
  • Hallo framp, ich habe herrausgefunden dass, man Scripte mit dem Befehl "source" ausführen kann, ohne die Datei ausführbar machen zu müssen.

    Das ist keine Besonderheit von source. Du kannst auch mit

    Code
    bash meinSkript.sh

    meinSkript.sh starten, ohne meinSkript.sh vorher ausführbar zu machen.


    Mit source wird es aber im Kontext der laufenden Shell ausgeführt, was nützlich ist, um Variablen zu laden, Aliase und Funktionen. Wenn das Skript aber am Ende ein exit 0 am Ende enthält, dann macht es paff, und die Konsole, mit der Du das aufgerufen hast, ist beendet.


    Daher solltest Du source, oder gleichbedeutend den Punkt . nur aufrufen, wenn Du danach wirklich dort definierte Variablen, Aliase oder Funktionen nutzen willst.


    Zur Ausgangsfrage: Wenn Du mehrere Zeilen ausgeben willst, dann kannst Du das auch mit einem Singlequote über mehrere Zeilen machen:

    Code
    echo '#!/bin/bash
    echo Zeile 2
    echo "Zeile   3"
    echo Zeile 4' > foo.dat

    Das geht auch interaktiv in der Shell, aber Du musst aufpassen, dass Du kein Single-Quote (Apostroph) einfach so im Code benutzen kannst, damit schließt Du sonst unwillentlich Deinen Input. Nun ja, und es hat die Konsequenz, dass innerhalb der Singlequotes Variablen nicht aufgelöst werden, d.h. Du müsstest den Singlequote schließen, dann $var.sh schreiben, und dann wieder öffnen - das kann sich leicht zur Konzentrationsübung auswachsen.


    Wenn Du viele Singlequotes hast, dann könntest Du auch mit Doublequotes arbeiten und müsstest dann, wie von Manul gezeigt, den Bang mit Backslash maskieren.