Gleicher Befehl über Script -> Fehler?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von FeaR, 06.08.2010.

  1. FeaR

    FeaR Grünschnabel

    Dabei seit:
    06.08.2010
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo,

    mein Name ist Michael und ich bin als zukünftiger Admin in die IT-Branche gekommen ;) Aktuell bin ich noch in der Startphase und beim erlernen der Praxis, nachdem ich meine Ausbildung im Sommer letzten Jahres abgeschlossen habe. Bei der neuen Firma habe ich jetzt auch das erste mal richtig viel Kontakt mit Linux/Ubuntu/Sles. Dabei bin ich nun auch vermehrt auf dieses Forum gestossen und wollte mir nun selbst Hilfe zu meinem konkreten Problem holen.

    Nun aber zum wesentlichen Inhalt/Grund des Threads ;)
    Ich habe ein grosses Problem. Ich bin ziemlich neu mit Ubuntu / Linux unterwegs und versuche mich an diversen Scripten um hier in der Firma Sachen zu beschleunigen.

    Mein aktuelles Script soll mir einfach einen ls -l von einzelnen Dateien ausgeben und in eine .txt schreiben.

    Das Skript ist recht simpel aufgebaut, warscheinlich gäbe es da wesentlich schnellere oder einfachere Wege, aber ich wills ja lernen und nicht was vorgekautes probieren.

    Hier erstmal mein Script:

    Das Problem ist, wenn Leerzeichen innerhalb des Dateinamens oder Pfades vorhanden sind, macht das Skript Ärger.

    Die aktuelle Ausgabe mit 3 Testdateien ist folgende:

    -rw-r--r-- 1 michael michael 3215350 2010-06-15 15:48 /home/michael/Downloads/nagios-3.2.1.tar.gz
    ls -l /home/michael/Downloads/nagios-3.2.1.tar.gz

    -rw-r--r-- 1 root root 0 2010-08-06 09:45 /home/michael/Downloads/wtf?.txt
    ls -l /home/michael/Downloads/wtf?.txt

    ls: Zugriff auf /home/michael/Downloads/Hallo\ Leerzeichen.txt nicht möglich: No such file or directory
    ls -l /home/michael/Downloads/Hallo\ Leerzeichen.txt



    Das kuriose ist, wenn ich den ls -l am Ende einfach kopiere und selbst ausführe, klappt alles Problemlos und mir werden die Daten der Datei Hallo Leerzeichen ausgegeben. Das Skript gibt aber diesen Fehler aus.

    Habt ihr da irgendeine Idee die mir weiter helfen könnte?

    Danke euch.

    bye
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. NoXqs

    NoXqs Routinier

    Dabei seit:
    07.05.2007
    Beiträge:
    420
    Zustimmungen:
    0
    Ort:
    Bremen
    Nehm den Backslash aus dem Dateinamen in der Inputdatei.
    Ich denke, dann kommst du selbst drauf, was der Fehler war.
    Sonst meldest du dich nochmal.
     
  4. #3 Remidemi, 11.08.2010
    Remidemi

    Remidemi Routinier

    Dabei seit:
    17.03.2008
    Beiträge:
    352
    Zustimmungen:
    0
    Ort:
    Südpfalz
    Hallo

    NoXqs hat recht. Also entweder lässt du den Backslash im Input weg. Der Backslash würde zwar das Leerzeichen escapen aber die double Quotings (") verhindern dies. Darum funktioniert es mit Backslash auf der Konsole.

    Oder du lässt den Backslash in der Inputdatei und lässt die ganzen vielen verwirrenden Quotings weg:
    Pfad=$(sed -ne "$Zeile p" test.txt)
    lsinfo=$(ls -l $Pfad)
    echo $lsinfo
    lsinfo2=$(ls -l $Pfad)
    echo $lsinfo2

    MFG
     
  5. FeaR

    FeaR Grünschnabel

    Dabei seit:
    06.08.2010
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo zusammen ;)

    Ich war leider ein paar Tage verhindert, daher jetzt erst meine Antwort. Also ich bin durch den Hinweis von NoXqs dann selbst drauf gekommen, vielen Dank dafür. Da war ich wohl einfach blind gegenüber dem Fehler bzw. habe nur im Script gesucht und eine richtige Inputdatei vorausgesetzt.

    An der Inputdatei kann ich nix ändern, die ist so vorhanden und hat diverse Einträge, deswegen fällt das leider flach. Ist aber ja auch egal, das Script klappt soweit bei mir.

    Dankeschön euch für die Hilfe

    bye
     
  6. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Noch ein Tip zu Deinem Skript: In einem Skript solltest Du fuer Befehle moeglichst den ganzen Pfad benutzen, also z.B. /bin/ls. Gerade ls ist oft ein alias, und Deine Textdatei wird ziemlich unleserlich aussehen, wenn ein alias auf 'ls --color' die ganzen Kontrollzeichen mitumleitet, die die schoenen Farben in der Konsole erzeugen. Und wenn rm ein alias auf 'rm -i' ist und Du das Skript unbeaufsichtigt ausfuehren moechtest, koennte es stecken bleiben.
     
  7. FeaR

    FeaR Grünschnabel

    Dabei seit:
    06.08.2010
    Beiträge:
    4
    Zustimmungen:
    0
    Ok danke für den Hinweis ;)

    Wir nutzen zwar aktuell nur Server wo keinerlei Aliase gesetzt wurden, aber ich werde das bei meinem nächsten Script mal versuchen. Hier ging es nur um eine schnelle Fehleranalyse. Ist ja auch im Sinne der Portierbarkeit dann sinnvoll.

    bye
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Gleicher Befehl über Script -> Fehler?

Die Seite wird geladen...

Gleicher Befehl über Script -> Fehler? - Ähnliche Themen

  1. Dateien mit gleicher Größe löschen

    Dateien mit gleicher Größe löschen: Hallo zusammen, ich bin neu hier und hätte gleich mal eine Frage :) Wie der Titel schon sagt möchte ich alle Dateien aus einem Verzeichnis...
  2. Rechner startet X-Server immer in gleicher Konfiguration

    Rechner startet X-Server immer in gleicher Konfiguration: Hallo Leute, ich habe ein großes Problem: Mein Rechner ist im Moment sehr langsam sobald die grafische Oberfläche gestartet ist. Nun hatte ich...
  3. Linux auf gleicher Platte unter Windows konfigurieren?

    Linux auf gleicher Platte unter Windows konfigurieren?: Hallo, wie viele andere benutze ich unter Win Ext2Fsd um Dateien meines Linuxsystems auf der gleichen HD in anderer Partition kurzfristig zu...
  4. Gleicher Apache, verschiedene Versionen

    Gleicher Apache, verschiedene Versionen: Ich habe auf einer Solaris9 Maschine Apache 2.0.55 installiert. Funktioniert auch alles wie es soll. Durch Zufall habe ich gesehen, das 'httpd...
  5. VNC logged nicht als gleicher Benutzer ein wie kdm

    VNC logged nicht als gleicher Benutzer ein wie kdm: Hallo Leute, habe folgendes Problem: Wenn ich mich local am Fedore Core 3 Server via kdm als Benutzer "test" anmelde, laufen alle Programme...