Abfrage in Script mit Default-Wert - wie geht das?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Kryptaesthesie, 09.09.2009.

  1. #1 Kryptaesthesie, 09.09.2009
    Kryptaesthesie

    Kryptaesthesie Jungspund

    Dabei seit:
    02.02.2006
    Beiträge:
    23
    Zustimmungen:
    0
    Ort:
    NRW
    Hallo :-)

    Ich würde gerne in meinem Script Abfragen machen, die mit einem Defaultwert belegt sind.

    Also folgender Aufbau:
    Code:
    #!/bin/sh
    
    ANTW=""
    echo "soll etwas gemacht werden? [J/n]"
    read ANTW
    if [ $ANTW = "j" ]
    then
    	echo "okay, machen ..."
    fi
    
    Ich möchte nun gerne erreichen, dass ich sowohl Enter drücken, als auch j als Großbuchstabe eingeben kann, um ins if zu gelangen.
    Gibt es da eine best-practise Variante?

    Ich meine, bei Unix-Programmen hat sich so ein Verhalten eingebürgert, kann das sein?

    Danke schon mal im Voraus! :)
    Gruß
    Gerrit
     
  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. #2 bytepool, 09.09.2009
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    ehm, einfach nach read checken ob die Variable leer ist, und wenn ja den default Wert nehmen?

    mfg,
    bytepool
     
  4. #3 Kryptaesthesie, 09.09.2009
    Kryptaesthesie

    Kryptaesthesie Jungspund

    Dabei seit:
    02.02.2006
    Beiträge:
    23
    Zustimmungen:
    0
    Ort:
    NRW
    Hmm, wenn ich einfach nur Enter drücke, also die Variable dann leer ist, kommt folgender Fehler:
    Code:
    ./mytest.sh: line 7: [: =: unary operator expected
    

    Gruß
    Gerrit
     
  5. #4 bytepool, 09.09.2009
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    ich quote mich mal selbst:
    [ -z ]
    man test.

    mfg,
    bytepool
     
  6. #5 floyd62, 09.09.2009
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Hi,

    zunächst mal ganz einfach ein Tipp: Variablen immer in Quotes, oder mit Default-Werten; spart nen Haufen solcher Probleme ;-)

    Dann könnte man deinen Ansatz einfach ein bisschen erweitern:
    Code:
    #!/bin/sh
    
    ANTW=""
    echo "soll etwas gemacht werden? [J/n]"
    read ANTW
    if [ ${ANTW:-j} = "j" ]
    then
    	echo "okay, machen ..."
    fi
    
    Wenn so was möglichst überall laufen soll (verschiedene Shells, unterschiedliche Betriebssysteme), mach ich das meistens so in der Art:
    Code:
    type shopt | grep "not found" >/dev/null || shopt -s xpg_echo
    
    while :; do
            echo "\nWas jetzt? [J/n/q] \c"
            read RESP
            case "$RESP" in
            ""|[Jj])                         # "" - default response
                    echo "Yes, Sir!"
                    break
                    ;;
            [Nn])
                    echo "Nope"
                    break
                    ;;
            [Qq])
                    echo "Quit"
                    exit
                    ;;
            *)
                    echo "Bloedsinn ... Nochmal versuchen!"
                    ;;
            esac
    done
    ...
    
    Und sonst gibts natürlich auf den diversen Systemen so praktische Utilities wie "dialog" oder "ckyorn", jeweils mit den dazugehörigen Manuals ...

    Gruss,
    A.
     
  7. #6 Kryptaesthesie, 09.09.2009
    Zuletzt bearbeitet: 09.09.2009
    Kryptaesthesie

    Kryptaesthesie Jungspund

    Dabei seit:
    02.02.2006
    Beiträge:
    23
    Zustimmungen:
    0
    Ort:
    NRW
    Das klappt in der Tat besser, als = "" :)

    Dankööö! :)
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Hey cool, danke für den Ansatz! :)
     
  8. Anzeige

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

Abfrage in Script mit Default-Wert - wie geht das?

Die Seite wird geladen...

Abfrage in Script mit Default-Wert - wie geht das? - Ähnliche Themen

  1. script für Netzwerkabfrage

    script für Netzwerkabfrage: Hallo, bin noch Neuling in Linux... Ich suche ein SH-script-Beispiel wie ich in einem Embedded Linux System (busybox) ein "wget" nur dann...
  2. datum abfragescript

    datum abfragescript: Hallo, ersteinmal will ich mich entschuldigen das ich keinen anfang habe von dem was ich möchte! Das liegt daran das ich keinen Plan vom...
  3. shellscript soll nur beendet werden wenn passwortabfrage erfolgt

    shellscript soll nur beendet werden wenn passwortabfrage erfolgt: hallo liebe leute, ich schreibe zur zeit an einem script, dass einige user und computerspezifische daten an der konsole ausgibt, und nur...
  4. Abfrage von Daten aus einer MySQL DB über ein Shell Script

    Abfrage von Daten aus einer MySQL DB über ein Shell Script: Hallo, folgendes Problem: - ich soll per Script Daten aus meiner DB holen Wie funktioniert das genau? habe schon was von JISQL gehört?...
  5. FTP ohne passabfrage per shellscript

    FTP ohne passabfrage per shellscript: Hi nochmal ne frage wie mache ich nen ftp script das automatisch arbeitet zb: ftp -n <<EOF open ***.***.***.*** user ***** password...