parameter übergabe

F

fuQito

Grünschnabel
hallo zusammen!
ich bin dran einen script zu schreiben, habe neu angefangen und bin neu programmierer. Script sollte daten löschen, es gibt verschiedene accounts und alle haben einen Public verzeichnisse und diese Verzeichnisse sollen mit dem script "bereinigt" werden! wie ich die daten löschen soll usw habe ich schon programmiert abr bei der parameter übergabe habe ich schwierigkeiten!. Das script hat nur 3 optionen (-d und -n) debug, nonexecute und ohne option. Reinfolge sollte keine rolle spielen, es dürfen max 2 optionen angegeben werden und wenn man z.B. -a eintippt oder so sollte script abbrechen und nicht weiter arbeiten.

im moment sieht mein script so aus;

Code:
#!/bin/bash
if [ $# -le "2" ] ; then
echo
else
  echo "Fehler!"
  exit
fi

for i in $@
do
  if test $1 == "-d" ; then
    debug="1"
    nonexec="0"
  elif test $1 == "-n" ; then 
    nonexec="1"
    debug="0"
  else
    exit
  fi

  if test $2 == "-d" ; then
    debug="1"
    nonexec="0"
  elif test $2 == "-n" ; then
    nonexec="1"
    debug="0"
  else
    exit
  fi

  if test $1 == $2 ; then
    echo "Fehler!"
    exit
  else
    continue
  fi
done

case "$1" in
     -d)
            echo "Debug Mode"
            ;;
     -n)
            echo "Non-Execute"
            ;;
esac

case "$2" in
     -d)
            echo "Debug Mode"
            ;;
     -n)
            echo "Non-Execute"
            ;;
esac

exit 0

Weiss jemand wie ich diese Verzweigungsproblem lösen kann? bessere Ideen? ?( vielen dank
fuat
 
Ich würde es so machen (ungeprüft):

Code:
#!/bin/bash

debug="0"
nonexec="0"

while [ $1 ]
do
  case "$1" in
     -d)
            echo "Debug Mode"
            debug="1"
            ;;
     -n)
            echo "Non-Execute"
            nonexec="1"
            ;;
      *)
            echo "Fehler"
            exit
            ;;
  esac
  shift
done

Gruss, Phorus
 
Zuletzt bearbeitet:
ich würd's irgendwie so machen
Code:
#!/bin/bash

if (( $# > 2 )) ; then
  echo "Fehler: ungültige Anzahl Parameter"
  exit 1
fi

nonexec=0
debug=0

for i in $@
do
  if [ $i == "-d" ]; then
    debug=1
  elif [ $i == "-n" ]; then 
    nonexec=1
  else
    echo "Fehler: ungültiger Parameter $i"
    exit 2
  fi
done

if (( $debug )); then echo "Debug Mode"; fi
if (( $nonexec )); then echo "Non-Execute"; fi

exit 0
 
danke ninguno und Phorus! hab's hingekriegt naja sieht eigentlich einfach aus aber für mich war es schwierig :brav:
 

Ähnliche Themen

Returncode ($?) bei find immer "0" ?

Switche abfragen über Script

NAS-Drive Mount in Bash-Script über crontab

script sshpass

Verschlüsseltes Backup-Script mit rsync

Zurück
Oben