"Wollen Sie wirklich...?"-Funktion

U

uhbuntuh

Jungspund
Hallo!
Ich versuche eine Funktion zu schreiben, die man per && vor einen Befehl hängen kann, um vor dem Ausführen des Befehls eine Bestätigung zu erzwingen. Also ein Vista-Feature für die shell :D.

Hier meine ersten Versuche. Allerdings erreiche ich im Moment das Gegenteil. Bei der Eingabe von "n" -> return 0 wird der Befehl ausgeführt. Bei der Eingabe von "J" -> return 1 nicht. Was mache ich falsch? Danke für eure Hilfe!

Code:
alias teste='wirklich "Wollen Sie wirklich irgendwas tun" && echo "irgendwas tun"'
wirklich ()
{
  go=""
  while [ ! "$go" = "J" ]
  do
    echo -n "$1? [J/n]: "; read go
    if [ "$go" = "n" ]; then return 0; fi
  done
  return 1
}
 
Du überschreibst dein return mit dem 2ten Return nach der Schleife.

Ich würde es so machen:
Code:
alias teste='wirklich "Wollen Sie wirklich irgendwas tun" && echo "irgendwas tun"'
wirklich ()
{
echo -n "$1? [J/n]: "; read go
if [ "$go" = "n" ]
then 
      return 0
else 
      return 1 
fi
}
 
vielen dank für deine hilfe!
aber irgendwie hat das nicht geholfen.

wieso wird der befehl denn bei einem "return 0" ausgeführt und bei einem "return 1" nicht? es handelt sich doch um ein &&!
 
Alles != 0 ist'n (fehlerhafter) Programabbruch, damit ist das && hinfällig...
 
wieso wird der befehl denn bei einem "return 0" ausgeführt und bei einem "return 1" nicht? es handelt sich doch um ein &&!

Soweit ich weiss, ist ein Rueckgabewert von 0 fuer die Bash ein erfolgreiches Abschliessen, waehrend != 0 ein Fehler bedeutet. Das erlaubt es, verschiedene Fehlercodes zu haben, auch wenn das den logischen Werten von '0' und '1' widerspricht.
 
Ah! Da liegt der Hund begraben. Danke für die Nachhilfestunde!
 

Ähnliche Themen

script sshpass

Verschlüsseltes Backup-Script mit rsync

Port generieren, wenn nicht dann

HandbrakeCLI Shell Skript

Shellskript - Fehler in Cron

Zurück
Oben