PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash



klabauter
22-08-2004, 15:17
Hallo, :mad:
vielleicht kann mir bitte jemand helfen, bin schon ganz wuschig
Ich möchte ein Script schreiben, jenes soll auf 3 unterschiedliche Parameter reagieren. Ich habe auch schon angefangen, aber es funktioniert noch nicht so ganz. Einzeln funktionieren die "Dinger" schon. Muß ich die Parameter deklarieren?? Vielen Dank für die Hilfe.
#!/bin/bash

if [ "$1" = "users" ]
then
cat /etc/passwd | sort |more


if [ "$2" = "ps-root" ]
then
ps -ef | grep root | more


if [ "$3" = "-h " ]
then
echo "Dies ist ein kleiner Hilfetext"
echo
fi
fi
fi

Blackhawk
22-08-2004, 17:52
hmm, ich glube du willst eher einen Parameter verwenden:

also ersetze $2 und $3 durch $1
ansosnten muesste ich dein Programm ja immer mit

komisches_script.sh users ps-root -h

aufrufen...

panzi
23-08-2004, 01:26
Tipp: man getopt (http://unixhelp.ed.ac.uk/CGI/man-cgi?getopt)

netmaster
23-08-2004, 07:27
Sauberer wäre es natürlich mit einer case-Anweisung.

case $1 in
user)
cat /etc/passwd | sort |more
;;
ps-root)
ps -ef | grep root | more
;;
*)
echo "Dies ist ein kleiner Hilfetext"
;;

klabauter
23-08-2004, 22:32
Hallo Rene
vielen Dank für Deine Hilfe.
monsterchen

tuNIxM1TUniX
24-08-2004, 19:01
case $1 in
user)
cat /etc/passwd | sort |more
shift
;;

... jedenfalls wenn du anschließend noch gemeinsamen Code ausführen willst ...

RapidMax
24-08-2004, 22:55
if [ $# -le 0 ]
then
echo "Not enough arguments" >&2
exit -1
fi
while [ "$1" != "" ]
do
case "$1" in
-h|--help)
echo "usage: $0 [OPTIONS] INPUT_FILE"
exit
;;
--version)
echo "$VERSION"
exit
;;
-f|--file)
OUTFILE="$2"
shift
;;
-*|--*)
echo "Invalid option: \"$1\"" >&2
exit -1
;;
*)
INPUT_FILE="$1"
;;
esac
shift
done
echo "Read from $INPUT_FILE and write to $OUTFILE"

Funktionierte bisher immer ganz gut.

Gruss, Andy