• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

sh-skript - Wie Argumente hinzufügen?

D.Cent

Member
Hallo,

Ich bin gerade dabei, ein sh-skript zu programmieren. Aber wie mache ich das, wenn ich zum Beispiel "./test.sh --help" eingebe, dass dann statt der Ausführung des Programms ein Hilfetext kommt, und dann nichts weiter passiert?

Oder dass ich ./test.sh --descent3directory=/usr... eingeben kann und dann wird in dem Shellskript etwas geändert?

Danke schon mal, cent
 

AKO

Hacker
Die Argumente werden unter den Variablen $1, $2, ... gespeichert.
$0 entspricht dem Skriptnamen. Wenn du nicht willst das die Reihenfolge der arugmente festgelegt ist musst du dich mit "shift" auseinander setzen.

EDIT: Bitte nach "Konsole" verschieben.

MfG ako
 
Ansonsten schau dir mal getopt an.

Könnte in etwa so aussehen:
Code:
#!/bin/sh
ARGV="$@"
PRGNAME=$(basename $0)

if [ $# -gt 0 ]; then

set -- $ARGV;
  OPT="dir:,help";
  TEMP=$(getopt --options=d:h --long $OPT -n $PRGNAME -- "$@");
  if [ $? -ne 0 ]; then
    echo "Terminating..." >&2;
    exit 100;
  fi;

  eval set -- "$TEMP";

  while true; do
    case $1 in
      --help|-h) CMD="help";;
      --dir|-d) CMD="dir"; DIR="$2"; shift;;
      --) break;;
      *) echo "Unknow argument \"$1\"!"; exit 100;;
    esac;
    shift;
  done;
  
  if [ $CMD = "help" ]; then
    echo "Hilfe";
   else
     echo "Dir: $DIR";
  fi;

 else
   echo "Usage:"; exit 100;
fi;
 
Oben