Teile von Strings in Variablen speichern.

Dieses Thema: "Teile von Strings in Variablen speichern." im Forum "Shell-Skripte" wurde erstellt von bobafe, 28.07.2005.

  1. bobafe

    bobafe Jungspund

    Dabei seit:
    22.07.2005
    Beiträge:
    10
    Zustimmungen:
    0
    Hallo,

    wie ihr seht, ich bin nicht gad der Hellste, was Unix angeht, aber deshalb arbeite ich ja daran ;)

    Mein aktuelles Problem sieht so aus: Der Nutzer gibt den komplette Pfad einer Datei an, also z.B /Bereich/Abteilung/Gruppe.txt

    Dabei kann die Datei natürlich in einem beliebigen Unterordner stecken, es sind als nicht immer nur drei Slashs.

    Ich möchte nun, dass in der Variablen file Gruppe.txt und in der Variabelen path /Bereich/Abteilung/ (für dieses Beispiel) steht.

    Könnt ihr mir bitte sagen, wie das geht?

    Gruß,
    Andreas.
     
  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. hmhweb

    hmhweb Mitglied

    Dabei seit:
    29.11.2004
    Beiträge:
    46
    Zustimmungen:
    0
    Hallo,

    Dir hilft man basename und man dirname

    hmh
     
  4. #3 h2owasser, 28.07.2005
    h2owasser

    h2owasser Sxe Power User

    Dabei seit:
    07.12.2002
    Beiträge:
    491
    Zustimmungen:
    0
    dafür gibt es die Befehle "basename [Dateiname]" bzw. "dirname [Dateiname]".
     
  5. bobafe

    bobafe Jungspund

    Dabei seit:
    22.07.2005
    Beiträge:
    10
    Zustimmungen:
    0
    Hm, also wenn ich es so mache (was mit Sicherheit falsch ist),
    Code:
    dir="/Bereich/Abteilung/Gruppe.txt"
    path=dirname $dir
    file=basename $dir
    echo $path
    echo $file
    dann kriege ich folgende Ausgabe:

    tet[2]: /Bereich/Abteilung/Gruppe.txt: not found
    tet[3]: /Bereich/Abteilung/Gruppe.txt: not found


    Es steht ja auch gar nicht fest, ob die Datei bzw. der Pfad auch wirklich existieren, wenn sie der Nutzer eingibt.
     
  6. hmhweb

    hmhweb Mitglied

    Dabei seit:
    29.11.2004
    Beiträge:
    46
    Zustimmungen:
    0
  7. bobafe

    bobafe Jungspund

    Dabei seit:
    22.07.2005
    Beiträge:
    10
    Zustimmungen:
    0
    Danke.

    Jetzt ist mir aber nochwas aufgefallen: wenn der Nutzer nun z.B. nur /Bereich/Abteilung angibt, weil er alle den gesamten Unterordner Abteilung meint, dann wird ja mit basename Abteilung angegeben.

    Gibt es daher eine Möglichkeit, zu prüfen, ob Abteilung eine Datei oder ein Verzeichnis ist?
     
  8. hmhweb

    hmhweb Mitglied

    Dabei seit:
    29.11.2004
    Beiträge:
    46
    Zustimmungen:
    0

    Klar gibt es dafür auch was - und zwar die "test" Konstrukte:

    if test -d $dir ; then # kann man auch if [ -d $dir ] ; then .... schreiben
    echo "Verzeichnis"
    else
    echo "kein Verzeichnis"
    fi

    Dateien kann man in gleicher Weise mit -f testen, s.a. man bash unter Compound commands

    hmh
     
  9. bobafe

    bobafe Jungspund

    Dabei seit:
    22.07.2005
    Beiträge:
    10
    Zustimmungen:
    0
    Also ich habe es jetzt so genacht:
    Code:
    # Auswertung Parameter 2 (Quellenauswahl)
    if test "$2" != ""
    then
        SRC_ROOT=`dirname $2`
        file=`basename $2`
        if test -d $file
        then
            skriptabbruch
        else
            cntrlfile=$2
        fi
    else
        skriptabbruch
    fi
    Bei allen bisherigen Durchläufen, also auch, wenn file ein Ordner ist, läuft das Programm weiter bzw. wird der else-Zweig verwendet. Kann es sein, dass ein String immer als Dateiname interpretiert wird, wenn er über basename selektiert worden ist?
     
  10. bobafe

    bobafe Jungspund

    Dabei seit:
    22.07.2005
    Beiträge:
    10
    Zustimmungen:
    0
    Okay, hab den Fehler gefunden. nicht
    Code:
    if test -d $file
    sondern
    Code:
    if test -d $2
    Trotzdem danke für die vielen guten Tipps :)
     
Thema:

Teile von Strings in Variablen speichern.

Die Seite wird geladen...

Teile von Strings in Variablen speichern. - Ähnliche Themen

  1. Shell script - Zerteilen eines Textstrings

    Shell script - Zerteilen eines Textstrings: Hallo Liebe Shell Expreten! Ich bin seit 1 Woche dabei kleinere Shellscripte zu schreiben die mir das Leben auf der Arbeit etwas erleichtern...
  2. Nvidia übernimmt Teile von TransGaming

    Nvidia übernimmt Teile von TransGaming: Wie Nvidia und TransGaming bekannt gaben, übernimmt der Chip-Hersteller für 3,75 Millionen US-Dollar die Graphics and Portability Group von...
  3. Opera 26 führt das Teilen von Lesezeichen ein

    Opera 26 führt das Teilen von Lesezeichen ein: Mit der Veröffentlichung einer neuen Version des Opera-Browsers hat der norwegische Hersteller den Nutzern die Möglichkeit gegeben, Lesezeichen...
  4. Nvidia öffnet Teile der GPU-Dokumentation

    Nvidia öffnet Teile der GPU-Dokumentation: Der Chiphersteller Nvidia hat Teile der GPU-Dokumentation veröffentlicht und will so die Entwicklung alternativer Treiber, wie beispielsweise dem...
  5. Teile der Ausgabe von dd unterdrücken

    Teile der Ausgabe von dd unterdrücken: Hallo liebe Community, folgendes Shellskript in der Erstehung ... ;) #!/bin/sh echo "Test: " dd if=test.img bs=512 skip=1 count=1 | hexdump...