Unterschied "<->'

Dieses Thema: "Unterschied "<->'" im Forum "Shell-Skripte" wurde erstellt von Alphager, 17.01.2005.

  1. #1 Alphager, 17.01.2005
    Alphager

    Alphager Mitglied

    Dabei seit:
    17.01.2005
    Beiträge:
    42
    Zustimmungen:
    0
    Ich bin gerade dabei, mich ins Thema Unix-Scripting einzuarbeiten und stoße beim nachvollziehen von Scripten immer wieder auf den Gebrauch von deoppelten (") und einfachen (') Anführungszeichen.
    Was genau bewirken sie ?
     
  2. Anzeige

    schau mal hier --> (hier klicken). Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Beide dienen dazu, etwas zusammenzufassen. Zum Beispiel lassen sich damit Dateinamen mit Leerzeichen (eine dämliche Windows-Unsitte) ansprechen, etwa
    Code:
    rm "Dies ist ein File"
    Der Unterschied zwischen ' und " liegt darin, wie eingeschlossene Sonderzeichen interpretiert werden. Ein einfaches Beispiel:
    Code:
    a=test
    echo "$a"      ---> liefert test
    echo '$a'      ----> liefert $a
    
    Gruss, Phorus
     
  4. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Ich stimme Phorus zu mit weiteren Beispielen:
    Geht aber (leider) auch ohne alles in " bzw. ' zu fassen:
    Ist jedoch nicht sehr sauber und sollte vermieden werden.

    Gruess
    Joel
     
  5. codc

    codc /dev/null

    Dabei seit:
    12.01.2004
    Beiträge:
    607
    Zustimmungen:
    0
    /klugscheiss on
    wobei echo \$a dem echo '$a' entspricht
    /klugscheiss off
     
  6. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Das hat er ja nicht ausgeschlossen ;), würde aber so noch in meiner Ergänzung stehen.
     
  7. pinky

    pinky König

    Dabei seit:
    11.08.2004
    Beiträge:
    795
    Zustimmungen:
    0
    um das ganze komplett zu machen gibt es auch noch ` `. Hier wird der Teil in `` quasi in einer eigenen shell ausgeführt und die Ausgabe des Befehls in `` wird eingesetzt.
     
  8. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    BTW eigene Shell.. das finde ich ein wenig merkwürdig:
    Dachte zuerst Kommandosubstitution ist nicht auf einer neuen Shell, was mir durch die Ausgabe der Prozess-ID ($$) bestätigt wurde. Komischerweise lässt sich dennoch in Kommandosubstitution keine Variablen exportieren.

    Komisch.. aber vielleicht bin ich einfach nur zu müde!
     
  9. oenone

    oenone Freier Programmierer[Mod]

    Dabei seit:
    22.08.2002
    Beiträge:
    599
    Zustimmungen:
    0
    Ort:
    Mannheim
    wobei `foo` äquivalent zu $(foo) ist :)

    auf bald
    oenone
     
  10. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    oldschool Fetishist ;). Ok, in den LPIC-1 Prüfungen war das zwar ne Frage...
     
  11. codc

    codc /dev/null

    Dabei seit:
    12.01.2004
    Beiträge:
    607
    Zustimmungen:
    0
    Jau - gleich hatte ich auch
     
  12. #11 Alphager, 18.01.2005
    Alphager

    Alphager Mitglied

    Dabei seit:
    17.01.2005
    Beiträge:
    42
    Zustimmungen:
    0
    zur Sicherheit eine Rückfrage:
    mit ' umschlossener Text wird als reiner Text behandelt ('$a' wird nicht durch den Inhalt von $a ersetzt).
    mit " umschloßener Text wird "normal" abgearbeitet, als ob die " nicht vorhanden wären.

    Stimmt das so, oder besteht nochmal ein Unterschied zum kompletten weglassen der Anführungszeichen ?
     
  13. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Es wird "gruppiert"! Also
    Code:
    touch "Dies ist ein File"
    rm Dies ist ein File    ---> geht nicht
    rm "Dies ist ein File"  ---> geht
    
     
  14. #13 Alphager, 18.01.2005
    Alphager

    Alphager Mitglied

    Dabei seit:
    17.01.2005
    Beiträge:
    42
    Zustimmungen:
    0
    das heißt also:
    touch '$test file' -> Datei mit dem Namen "$test file" wird erstellt
    touch "$test file" -> Datei mit dem NAmen " file" wird erstellt(sofern $test leer war).

    ich glaube, so langsam habe ich es verstanden.
    DANKE !
     
  15. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Ja genau. Am einfachsten ist sonst immer noch selbst ausprobieren!

    Auch lustig:
    file="das ist file"
    rm $file -> versucht "das", "ist" und "file" zu loeschen
    rm '$file' -> versucht "$file" zu loeschen

    Loesung:
    rm "$file" -> loescht "das ist file"

    Also in Shellscripts die mit Variablen arbeiten ist das setzen von "'s sehr angebracht!
     
  16. #15 Schlaubi_fi.de, 19.01.2005
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Das ist auch logisch, weil die Shell zuerst eine Command Substition durchführt,
    bevor etwas ausgeführt wird. D.h. es wird zuerst versucht die Kommandozeile
    aufzulösen:

    rm $file
    rm das ist file

    und das geht natürlich in die Hose - die " die du vorher bei der Variable $file
    gesetzt hast, gehen verloren.
     
Thema:

Unterschied "<->'

Die Seite wird geladen...

Unterschied "<->' - Ähnliche Themen

  1. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
  2. thunderbird plugin für unterschiedliche mail absender (postifx)

    thunderbird plugin für unterschiedliche mail absender (postifx): rm me rm me:devil:
  3. Bash: Geteiltes Fenster mit unterschiedlichen Funktionen

    Bash: Geteiltes Fenster mit unterschiedlichen Funktionen: Hallo Leute, ist es in Bash möglich, zwei Funktionen in zwei getrennten Teilen eines Terminalfensters ablaufen zu lassen? Da Bash die Befehle...
  4. Mit VIM Dateien vergleichen und Unterschiede sichtbar machen

    Mit VIM Dateien vergleichen und Unterschiede sichtbar machen: Hallo, mit VIM ist es recht passabel möglich, zwei Dateien zu vergleichen und die Unterschiede hübsch aufbereitet anzeigen zu lassen: # vim -d...
  5. Unterschied chmod und umask

    Unterschied chmod und umask: Hallo liebe Community, ich hätte heute mal eine für manche wahrscheinlich sehr simple Frage: Ich bin bei der Beschäftigung mit Linux auf chmod...