Bash: Suche nach Ausdruck

  • Hallo,


    möchte wissen ob ein gewisses Laufwerk gemountet ist. Wie finde ich einen Ausdruck in einer Variable ohne das grep gleich immer Dateien in meiner Variablen sucht?


    Konkret:


    Bash
    #!/bin/sh    
    MOUNT=`mount`    
    
    
    if grep  "/video" $MOUNT
       	then echo "video gemountet\n"  
    fi


    Aber wahrscheinlich gibts noch eine einfachere Lösung?
    Interessieren würds mich aber trotzdem.


    Grüße
    Fux

    Hardware: Asus M3N78-EM µATX GF 8300 | AMD Sempron 140 | Display VFD USB MDM166A | DVB-S2 TT-3600 USB | RAM 1 GB | WD20EARS 2 TB
    Software: yaVDR 0.5

    2 Mal editiert, zuletzt von Fux ()

  • häää ?
    hier :


    if mount | grep -q "on /video"; then
    echo "/video mounted"
    else
    echo "/video not mounted"
    fi

    2 Mal editiert, zuletzt von magicamun ()

  • ... warum löst du das nicht mit Bash-internen Mitteln? Ist schneller.

    Code
    read -d "" mounts < /proc/mounts
    if [ -z "${mounts/*\/video*/}" ]; then
      echo "/video gemountet"
    fi

    Erklärung: Zeile 1 liest die komplette /proc/mounts in die Variable $mounts ein (wegen -d "" die ganze Datei, nicht nur eine Zeile) -- das ist genau das selbe, was der Befehl "mount" ausgibt.
    In Zeile 2 wird die Variable $mounts nach dem Vorkommen nach "*/video*" durchsucht -- das ersetzt also dein Grep -- und gegen nichts ersetzt. Wenn also irgend wo "/video" vor kam, ist die Variable anschließend leer, was du per "-z" davor feststellst.


    Also, sparsam programmieren, externe Aufrufe kosten immens Speicher und Rechenzeit.


    Viele Grüße, Mirko

  • Zitat

    Wie wär's statt dem read-Aufruf damit:


    Code
    mounts=`</proc/mounts`


    Nicht so gut, weil du durch die umgedrehten Hochkommas eine Sub-Shell aufmachst, in der die Umleitung erfolgt, während read ein Shell-Builtin ist.


    Viele Grüße, Mirko

Jetzt mitmachen!

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