Hallo David, hallo Leute, Am Freitag, 5. September 2003 02:38 schrieb David Haller:
#! /bin/sh [...] STATEDIR="/var/state/assh" [...] # Verzeichnis $STATEDIR muss existieren und fuer uns schreibbar sein if test -d "$STATEDIR" && test -w "$STATEDIR" then : else cat <<EOF >&2 No such directory or cannot write in '$STATEDIR' Please contact your system-administrator to create this directory with appropriate permissions. EOF exit 2 fi [...] PS: etwas eigenartige Konstruktionen (if ... ; then : ; else ... ; fi) sind dadurch bedingt, dass ich bourne-shell kompatibel sein will und die ash zum testen verwendet habe -- und deren if-builtin kann kein 'if ! ...'
Ich wage es Dir gegenüber kaum zu sagen, aber: man test ;-) Das richtige Stich"wort" wäre in diesem Fall das Ausrufezeichen. Gerade in der ash getestet # mkdir testdir ; touch test # test ! '(' -d testdir -a -w testdir ')' && echo Problem # chmod 000 testdir # test ! '(' -d testdir -a -w testdir ')' && echo Problem Problem # test ! '(' -d test -a -w test ')' && echo Problem Problem # chmod 000 test # test ! '(' -d test -a -w test ')' && echo Problem Problem BTW: Statt '(' und ')' kann man natürlich auch mit \( und \) escapen. Um nochmal auf das ursprüngliche Script zurückzukommen - der folgende Block funktioniert auch ohne Verrenkungen ;-) # test ! \( -d test -a -w test \) && { echo Problem echo bitte überprüfen exit 3 } Problem bitte überprüfen [3] cb@tux:~> ^^^ ^^^^^^^^^ =$? zurück in der Bash ;-) BTW: Du hast Dir gerade einen useless use of if Award verdient ;-) Gruß Christian Boltz -- [SuSE 8.2] Auch die Paketverwaltung via YaST2 ist endlich einigermaßen brauchbar: Du kannst ein Paket auf ein permanentes "Tabu" setzen und - jetzt kommt die Überraschung - er überschreibt es _wirklich_ nicht! ;-) [René Matthäi in suse-linux]