[SOLVED] String verkürzen im bash Script

  • Hoi Leuts


    Mal wieder n Prob beim "bashen" .


    Bastel gerade mal wieder an meinem ALFS-Install-Script .
    Irgendwie fehlt mir im Script die Möglichkeit , eine Variable um ein Zeichen verkürzt in eine Andere zu kopieren .
    Aus default_var[0]="/dev/hda1" würde ich zu gern mein "fdisk /dev/hda" bauen - aber wie werd ich die 1 los , ohne den Umweg über ne Datei gehen zu müssen ?
    Jemand ne Idee ? Hab mal wieder meine beiden Help/HowTo Sites konsultiert - die schweigen sich leider zu dem Thema aus ... und der Weg via "cut" is mir eigentlich nicht elegant genug :whatever


    HJS

    Working VDR : VDR-1.4.6 - ACPI/NVRAM Wakeup - working on hjslfs

    Einmal editiert, zuletzt von hjs ()

  • wastl : gebookmarked :)
    @ronnykornexl : jo - analog zum ersten Code han ich das realisiert :]


    allerdings wollt ich ja kein echo sondern :

    Code
    fdisk ${default_var[0]:0:8}


    Interessant ist allerdings , daß nur der direkte Weg funzt .

    Code
    fdisk_var = ${default_var[0]:0:8}
    fdisk $fdisk_var


    führt zu "keine Berechtigung"
    Merkwürden , aber egal , da das Ziel ja erreicht ist .


    Thx@all helpers :D


    HJS


  • Jo - han ich auch so gehabt , fdisk_var ist "/dev/hda" trotzdem der genannte Fehler .


    HJS

  • Etwas mehr Vorsicht ist vielleicht sinnvoll, wenn man schon mit Platten-Devices rumfummelt, da lohnt sich auch mal eine Namensprüfung:


    if [ -z ${default_var[0]##/dev/[hs]d[a-z]*} ] ; then echo ${default_var[0]:0:8} ; fi


    Diese Variante akzeptiert nur /dev/hd? und /dev/sd? mit mindestens einem weiteren Buchstaben.

  • Zitat

    Original von Urig
    Etwas mehr Vorsicht ist vielleicht sinnvoll, wenn man schon mit Platten-Devices rumfummelt, da lohnt sich auch mal eine Namensprüfung:


    if [ -z ${default_var[0]##/dev/[hs]d[a-z]*} ] ; then echo ${default_var[0]:0:8} ; fi


    Diese Variante akzeptiert nur /dev/hd? und /dev/sd? mit mindestens einem weiteren Buchstaben.


    Bestimmt nett gemeint , aber :
    Was kann Schlimmes passieren , wenn da "/debfgrtf" steht ?
    Wenn der User die Platte bezeichnet , die er nicht meint ( hdd statt hdc z.B. ) dann hilft dir das auch nicht . Bei meinem Beispiel gibbet ne Fehlermeldung von fdisk - das wars ;)


    HJS

  • Zum Beispiel könnte jemand auf die Idee kommen, vom Root-Verzeichnis aus dev/hda1 anzugeben, dann würde einfaches Verkürzen gleich wieder dev/hda1 ausgeben. Aus /././dev/hda1 wird /././dev. Oder sonst irgend ein harmloser Dateiname, der durch kürzen zu etwas kritischerem wird - ich weiss ja nicht, was du dann damit vor hast...

  • Zitat

    Original von hjs
    Bestimmt nett gemeint , aber :
    Was kann Schlimmes passieren , wenn da "/debfgrtf" steht ?
    Wenn der User die Platte bezeichnet , die er nicht meint ( hdd statt hdc z.B. ) dann hilft dir das auch nicht . Bei meinem Beispiel gibbet ne Fehlermeldung von fdisk - das wars ;)


    HJS


    Wie oben fett zu sehen , wird das der Parameter für fdisk , wo s in allen deinen Beispielen ne Fehlermeldung gibt und Ende .


    Danke für den Rat - in anderen Anwendungen ist es mit Sicherheit sinnvoll , eine Plausibilitäts Verifikation durch zu führen .
    Ich gehe allerdings davon aus , das ein User in der Lage sein sollte , dasZiel Device anzugeben . Seine Eingabe wird ja auch nochmal geechot .


    Und der mögliche Fehler , daß der User ne falsche hdd angibt , ist so auch nicht aus der Welt zu schaffen .


    Wenns ums Formatieren und Partitionieren geht , ist Sorgfalt angesagt , da kein Prog der Welt mehr kann , als 37mal nachfragen . ;)


    HJS

Jetzt mitmachen!

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