![](https://seccdn.libravatar.org/avatar/363424a7062b0e7a90527600f3760d46.jpg?s=120&d=mm&r=g)
Hallo, Am Don, 29 Jun 2006, Al Bogner schrieb:
Am Donnerstag, 29. Juni 2006 11:46 schrieb David Haller:
Hallo,
Am Mit, 28 Jun 2006, Al Bogner schrieb:
Am Mittwoch, 28. Juni 2006 17:54 schrieb David Haller:
Am Mit, 28 Jun 2006, Al Bogner schrieb:
Etwas Bauchweh habe ich mit dem Quoting. In diesem Fall kann garantiert werden, dass keine Leerzeichen vorkommen. Wie müsste ich quoten, wenn das Verzeichnis Leerzeichen enthält?
Nochmals meine bereits o.a. Frage, wie erreiche ich eine Kontrollausgabe beim Ablauf des Scripts?
TEST_DIR="$MYDIR""/TEST_"`basename \`pwd\` | cut -c9-30` find $MYDIR -type d -regex ".*$TEST_DIR.*" -print0 | xargs -r -0 rm -r
pwd="`pwd`" TEST_DIR="${MYDIR}/TEST_`basename \"$pwd\" | cut -c9-30`" find "$MYDIR" ...
Oder:
TEST_DIR="${MYDIR}/TEST_$(basename $(pwd) | cut -c9-30)" find "$MYDIR" ...
Ich bin mir nicht sicher, ob das so passt.Ich habe es einfach in meinem Script ersetzt, das ja vorher das tat, was ich wollte und danach wurde das Vereichnis "darüber" auch gelöscht. Die 1. Variante muss ich noch testen. Mit dem u.a. Vorschlag kann ich die Auswirkungen ja nun kontrollieren, ohne wirklich zu löschen. Es ist kein Problem, wenn etwas ungewollt gelöscht wird, es ist aber zeitaufwendig richtig zurückzusichern.
Hm. Ersetze mal das '| cut -c9-30' durch ein '| cat'. 'cut -c' ist eben generell anfaellig, falls Zeichenpositionen nicht mehr passen. Wie sieht denn `pwd` aus? Und was davon willst du wegschneiden?
[..]
Wie könnte man noch absichern, dass die Variablen nicht leer sein dürfen, dass also nicht als User ein rm -r / entstehen kann.
test -z "$TEST_DIR" && exit 1
Nun ja, das mache ich ja schon, aber wenn $TEST_DIR=\, dann wird munter darauf los gelöscht und der User muss neu angelegt werden.
Das war nur die Antwort auf den ersten Teil: "nicht leer" ;)
Hierbei ist aber das quoten essentiell! Sonst sieht die shell ein 'test -z && exit 1' soll aber ein 'test -z "" && exit 1' sehen.
Alternativ und "unempfindlicher":
test -n "$TEST_DIR" || exit 1 test "x${TEST_DIR}" = "x" && exit 1
und als zusaetzlichen(!) Test noch:
Ja, in dieser Richtung überlege ich.
test "x${TEST_DIR}" != "x/" || exit 1
Wofür steht das x oder ist das nur eine Sicherheismaßnahme?
Letzteres.
Achso, zum ausgeben noch eine Variante:
{ find ... -print0 | tee /dev/stderr | xargs ... } 2>&1 | tr '\0' '\n'
Genau sowas wollte ich. Ist ja simpel, man muss nur daran denken.
*g* -dnh -- 119: Dateimanager cd, ls, cp, mv (Ulli Horlacher) -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com