Vorbemerkung, normalerweise brenne ich per Shellscript CDs und wenn man nicht aufpaßt und die Quelle zu groß ist, ist die CD verbrannt, daher habe ich versucht, dies im Script abzufangen. Auszug aus dem Script BRENNQUELLE="/brenndaten/" BRENNMAXBYTES="7281346100" # Testwert, viel zu groß BYTESZAEHLEN=`du -Lsb $BRENNQUELLE` BRENNBYTES=`echo $BYTESZAEHLEN|cut -f 1 -d' '` # Testverzeichnis: 728134611 if [ $BRENNBYTES > $BRENNMAXBYTES ]; then echo "nicht ok" else echo "ok" fi Die Bedingung ist nun immer "nicht ok". Wo ist da mein Gedankenfehler? Al
if [ $BRENNBYTES > $BRENNMAXBYTES ]; then echo "nicht ok" else echo "ok" fi
Zahlenvergleichschreibweise entweder: [ $z1 -gt $z2 ] oder bash und Korn-Shell: (( $z1 > $z2 )) Probier es mal damit Gruß Ernst ------------->> MFG Ernst Dietrich
http://www.cefoss.de <<<<< http://www.ernst-dietrich.de staatl. gepr. Wirtschaftsinformatiker
Am Sonntag, 28. September 2003 19:05 schrieb Ernst Dietrich:
Zahlenvergleichschreibweise entweder: [ $z1 -gt $z2 ]
Danke an alle, ich habe nach diesen "basics" echt gesucht, aber manchmal findet man immer das, was man nicht finden will :-) Kleine Zusatzfrage: Ich möchte für den Fall, dass ein Parameter nicht angegeben wurde, einen Standardwert verwenden. Also zB meinscript.sh meinwert dann wäre $1 = meinwert Wie frage ich nun mit test ab, ob $1 existiert test -n $1 && {echo ok} passt nicht. und wenn eben kein Parameter angegeben wurde, soll $1 = default werden Eine url, wo solche simplen _Beispiele_ angeführt werden, wäre auch hilfreich. In Manpages finde ich in der knappen Erklärung oft nicht das, um es zu verstehen. Man bash ist nur bedingt eine Hilfe, wenn ich konkret was suche. Al
Al Bogner wrote:
Kleine Zusatzfrage: Ich möchte für den Fall, dass ein Parameter nicht angegeben wurde, einen Standardwert verwenden.
Also zB meinscript.sh meinwert
dann wäre $1 = meinwert
Wie frage ich nun mit test ab, ob $1 existiert
test -n $1 && {echo ok} passt nicht.
Vergleich mit "-z". ARG1=$1 if test -z $ARG1; then ARG1="Default"; fi
und wenn eben kein Parameter angegeben wurde, soll
$1 = default
werden
Eine url, wo solche simplen _Beispiele_ angeführt werden, wäre auch hilfreich. In Manpages finde ich in der knappen Erklärung oft nicht das, um es zu verstehen. Man bash ist nur bedingt eine Hilfe, wenn ich konkret was suche.
Hast Du Dir http://www.linuxfibel.de/bash.htm mal angesehen? -- Andreas
Hallo,
Al Bogner wrote:
Kleine Zusatzfrage: Ich möchte für den Fall, dass ein Parameter nicht angegeben wurde, einen
Standardwert verwenden.
Eine einfache Lösung ist die Verwendung der eingebauten Zuweisungsfunktion von bash oder sh: VAL=${<Variable>-<Default>} d..h die Variable (z.B. das erste Parameter $1) erhält den Wert DEFAULT, wenn sie nicht definiert ist. Der folgende Screenshot wurde unter Cygwin erstellt, aber obengenannte Funktion gehört zum Kern aller Bourne-Shells: my_PC@PC /tmp $ cat default_for_param.sh #!/bin/sh -x VAL=${1-xxxx} echo VAL is $VAL myPC@PC /tmp $ ./default_for_param.sh + VAL=xxxx + echo VAL is xxxx VAL is xxxx myPC@PC /tmp $ ./default_for_param.sh CCCCCCCCCCCCCCC + VAL=CCCCCCCCCCCCCCC + echo VAL is CCCCCCCCCCCCCCC VAL is CCCCCCCCCCCCCCC VG, Roland
Also zB meinscript.sh meinwert
dann wäre $1 = meinwert
Wie frage ich nun mit test ab, ob $1 existiert
test -n $1 && {echo ok} passt nicht.
Vergleich mit "-z".
ARG1=$1 if test -z $ARG1; then ARG1="Default"; fi
und wenn eben kein Parameter angegeben wurde, soll
$1 = default
werden
Eine url, wo solche simplen _Beispiele_ angeführt werden, wäre auch hilfreich. In Manpages finde ich in der knappen Erklärung oft nicht das, um es zu verstehen. Man bash ist nur bedingt eine Hilfe, wenn ich konkret was suche.
Hast Du Dir http://www.linuxfibel.de/bash.htm mal angesehen?
-- Andreas
-- 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
--
Roland Müller
Hallo, Am Sun, 28 Sep 2003, Al Bogner schrieb:
Kleine Zusatzfrage: Ich möchte für den Fall, dass ein Parameter nicht angegeben wurde, einen Standardwert verwenden.
Also zB meinscript.sh meinwert
dann wäre $1 = meinwert
Wie frage ich nun mit test ab, ob $1 existiert
test -n $1 && {echo ok} passt nicht.
man bash -> Parameter Expansion (man -P"less '+/:-'" bash) foo="${1:-defaultwert}" Du solltest dir aber den ganzen Abschnitt durchlesen, besonders warum hier z.B. nicht "${1:=defaultwert}" geht. -dnh --
Wenn ich sie kennen wuerde, dann muesste ich nicht glauben. Hört sich an wie ein Bibelzitat. [in suse-talk]
Hallo, Am Sun, 28 Sep 2003, Al Bogner schrieb:
Auszug aus dem Script
BRENNQUELLE="/brenndaten/" BRENNMAXBYTES="7281346100" # Testwert, viel zu groß
BYTESZAEHLEN=`du -Lsb $BRENNQUELLE` BRENNBYTES=`echo $BYTESZAEHLEN|cut -f 1 -d' '` # Testverzeichnis: 728134611
if [ $BRENNBYTES > $BRENNMAXBYTES ]; then
help test! if test $BRENNBYTEST -gt $BRENNMAXBYTES; then -dnh -- Wenn man keine Vögel mag, ist es völlig in Ordnung, mit Kanonen auf Spatzen zu schiessen. -- ratti in suse-linux
Al Bogner am Sonntag, 28. September 2003 18:42:
Vorbemerkung,
normalerweise brenne ich per Shellscript CDs und wenn man nicht aufpaßt und die Quelle zu groß ist, ist die CD verbrannt, daher habe ich versucht, dies im Script abzufangen.
Auszug aus dem Script
BRENNQUELLE="/brenndaten/" BRENNMAXBYTES="7281346100" # Testwert, viel zu groß
BYTESZAEHLEN=`du -Lsb $BRENNQUELLE` BRENNBYTES=`echo $BYTESZAEHLEN|cut -f 1 -d' '` # Testverzeichnis: 728134611
if [ $BRENNBYTES > $BRENNMAXBYTES ]; then ^^ Hier wird der Wert in $BRENNBYTES in eine Datei namens $BRENNMAXBYTES geschrieben, die ggf. auch erst noch erstellt wird. Da das (fast) immer geht, wird immer der "true"-Zweig abgearbeitet.
Die numerischen Vergleichsoperatoren sind: -eq, -gt, -lt bzw. auch -ne, -ge und -le (du würdest schreiben: =,>,< sowie !=, >= und <=). Siehe auch man test. -- Gruß MaxX 8-)
Hi Al, On Sun, Sep 28, 2003 at 06:42:42PM +0200, Al Bogner wrote:
BYTESZAEHLEN=`du -Lsb $BRENNQUELLE` BRENNBYTES=`echo $BYTESZAEHLEN|cut -f 1 -d' '` # Testverzeichnis: 728134611
if [ $BRENNBYTES > $BRENNMAXBYTES ]; then echo "nicht ok" else echo "ok" fi
man test gibt dir eine Übersicht über die Vergleichsoperatoren Kannst Dir sonst ja auch mal mein Skript für ein CD Backup anschauen. Betreff: Backup Skript für mehrere CD's Den mime Teil decodieren und Spass haben :) Greetings Daniel -- It's better to be hated for what you are - than loved for what you are not!
participants (7)
-
Al Bogner
-
Andreas Winkelmann
-
Daniel Lord
-
David Haller
-
Ernst Dietrich
-
Matthias Houdek
-
Roland Müller