Re: Probleme mit bash-Script
Ulrich Fürst [EMAIL PROTECTED] writes: [ set `Kommando` ] Wo liegt den der Unterschied zwischen set `befehl` und variable=`befehl`? Bzw. in welchem manual finde ich zu set etwas? var=`befehl` setzt var auf das, was der Befehl zurückgibt. In deinem Beispiel brauchst du einen zusätzlichen Prozess (z.B. cut), um aus dem Ergebnis das Gewünschte herauszufieseln. set parst das Ergebnis und weist die Bestandteile den Positionsparametern ($1, $2, ..) zu. set ist ein ziemlich überladenes Kommando und hat noch einige andere Funktionen (info bash, The Set Builtin). Insbesondere solltest du bei dieser Anwendung set -- `Kommando statt set `Kommando` verwenden, wenn das Kommando auch null Ergebnisse liefern kann. Gruß, Heike -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Jan Trippler schrieb: Am Donnerstag, 3. Juni 2004 20:34 schrieb Ulrich Fürst: In man cut steht aber doch: -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter wenn ich also -d schreibe müsste er den vorhandenen Tabulatur gegen ein Leerzeichen austauschen. Oder verstehe ich das (anscheinend) falsch? Ja. cut tauscht gar nichts aus - er nutzt den vorgegebenen Feldtrenner, um Dir z. B. Feld 1 (cut -f1) aus der Eingabezeile ermitteln zu können. Wenn Du cut sagst: Nimm als Trennzeichen zwischen den Feldern den Blank und in der Eingabezeile gibts keinen, dann folgert cut haarscharf: Aha - nur ein Feld da. cut ist ein Messer - es schneidet Teilchen aus und sonst nix. Der Feldtrenner (Option -d) ist lediglich sozusagen die Stelle, an der das Messer angelegt wird. Ah jetzt ja, Danke. Ich glaub ich fang mal an zur englischen und deutschen Version eine Version Manpage for dummies zu schreiben... ;-) Hast Du schon mal ein Messer gehabt, was Dir an der Stelle, wo Du den Käse schneidest ein Stück Bratwurst einfügt? ;-) Wäre aber sicher 'ne Marktlücke 8-) Gruß Ulrich -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Heike C. Zimmerer schrieb: var=`befehl` setzt var auf das, was der Befehl zurückgibt. In deinem Beispiel brauchst du einen zusätzlichen Prozess (z.B. cut), um aus dem Ergebnis das Gewünschte herauszufieseln. O.K. das ist mir jetzt klar. set parst das Ergebnis und weist die Bestandteile den Positionsparametern ($1, $2, ..) zu. heißt das dass bei set `du -sm` $1 die Zahl ist und $2 dann der Punkt? Oder allgemein, dass die einzelnen Felder als Variablen von 1..x gesetzt werden? set ist ein ziemlich überladenes Kommando und hat noch einige andere Funktionen (info bash, The Set Builtin). Insbesondere solltest du bei dieser Anwendung set -- `Kommando statt set `Kommando` verwenden, wenn das Kommando auch null Ergebnisse liefern kann. Danke werd ich mir mal durchlesen. Gruß Ulrich -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Ulrich Fürst [EMAIL PROTECTED] writes: Heike C. Zimmerer schrieb: set parst das Ergebnis und weist die Bestandteile den Positionsparametern ($1, $2, ..) zu. heißt das dass bei set `du -sm` $1 die Zahl ist und $2 dann der Punkt? Oder allgemein, dass die einzelnen Felder als Variablen von 1..x gesetzt werden? Genau. Gruß, Heike -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Heike C. Zimmerer schrieb: Ulrich Fürst [EMAIL PROTECTED] writes: Heike C. Zimmerer schrieb: set parst das Ergebnis und weist die Bestandteile den Positionsparametern ($1, $2, ..) zu. heißt das dass bei set `du -sm` $1 die Zahl ist und $2 dann der Punkt? Oder allgemein, dass die einzelnen Felder als Variablen von 1..x gesetzt werden? Genau. Danke, wieder was gelernt; dann werd ich mal meinen Lese-Abend beginnen... :-) Gruß Ulrich -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Jan Trippler schrieb: Am Mittwoch, 2. Juni 2004 17:15 schrieb Ulrich Fürst: Meine Lösung wäre folgende gewesen: belegt=`du -sm` if [ $belegt -gt 7500 ] then echo echo Bitte erst alte Sicherungen löschen! echo exit 1; elif [ $belegt -lt 7500 ] then echo echo Sicherung beginnt ... echo fi Offensichtlich ergibt du -sm nicht eine Zahl sondern mehrere? Wie kann ich das verhindern? [EMAIL PROTECTED]:~/Development/www/progs du -sm 1 . In der Variablen $belegt steht also 1 . - da Du nicht quotest, kriegt der test folgendes zu sehen: [ 1 . -gt 7500 ] Abhilfe: belegt=`du -sm | cut -f1` Danke, da hab ich wohl nicht gut hingeguckt beim händischen durchprobieren; der Punkt ist mir einfach nicht aufgefallen. So funktioniert auf jeden Fall. Gruß Ulrich P.S. Das von Phillip vorgeschlagene `du -sm | cut -d' ' -f1` funktioniert nicht. Nur so interessehalber: Warum eigentlich nicht? Cut erkennt ein leerzeichen nicht als trenner an und interpretiert zahl . dann doch als ein Feld und übergibt es folglich ganz? Oder liegt das an etwas anderem? -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Heike C. Zimmerer schrieb: Eine Lösungsmöglichkeit: set `du -sm` if [ $1 -gt 7500 ]; then Geht leider nicht, hatte ich schon probiert (sämtliche Variationen von Anführungszeichen) Was macht dein Skript übrigens, wenn es exakt 7500 MB sind? Gar nichts. Irgendwie glaube ich nicht, dass das beabsichtigt ist... Das stimmt allerdings, Danke. Hab die zweite (-lt) gegen -le getauscht :-) Gruß Ulrich -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Ulrich Fürst schrieb: P.S. Das von Phillip vorgeschlagene `du -sm | cut -d' ' -f1` funktioniert nicht. Nur so interessehalber: Warum eigentlich nicht? Cut erkennt ein leerzeichen nicht als trenner an und interpretiert zahl . dann doch als ein Feld und übergibt es folglich ganz? Oder liegt das an etwas anderem? Cut-and-paste-Fehler von mir, du trennt mit Tabulater, korrekt war: dm -sm | cut -f1 -billy. -- Meisterbohne Meisterbohne GbR, Küfner, Mekle, Meier Tel: +49-731-399 499-0 eLösungen Söflinger Straße 100 Fax: +49-731-399 499-9 89077 Ulm http://www.meisterbohne.de/ -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
On 2004.06.03 14:41, Ulrich Fürst wrote: Heike C. Zimmerer schrieb: Was macht dein Skript übrigens, wenn es exakt 7500 MB sind? Gar nichts. Irgendwie glaube ich nicht, dass das beabsichtigt ist... Das stimmt allerdings, Danke. Hab die zweite (-lt) gegen -le getauscht :-) Wieso nimmst Du eigentlich ueberhaupt ein elif, wenn es doch ein einfaches else auch tut? Da sparst Du dann nicht nur die zweite Bedingung, sondern auch noch das zweite then... Schoenen Gruss, Andreas -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Ulrich Fürst [EMAIL PROTECTED] writes: Heike C. Zimmerer schrieb: Eine Lösungsmöglichkeit: set `du -sm` if [ $1 -gt 7500 ]; then Geht leider nicht, hatte ich schon probiert (sämtliche Variationen von Anführungszeichen) Geht nicht ist nicht besonders aussagekräftig. [EMAIL PROTECTED]:~$ du -sm 1317. [EMAIL PROTECTED]:~$ set `du -sm` [EMAIL PROTECTED]:~$ echo $1 [EMAIL PROTECTED]:~$ if [ $1 -gt 1317 ]; then echo ja; else echo noi; fi noi [EMAIL PROTECTED]:~$ if [ $1 -gt 1316 ]; then echo ja; else echo noi; fi ja Wieso Anführungszeichen? Auf die Backticks kommt es an. Gruß, Heike -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Andreas Schmidt schrieb: On 2004.06.03 14:41, Ulrich Fürst wrote: Heike C. Zimmerer schrieb: Was macht dein Skript übrigens, wenn es exakt 7500 MB sind? Gar nichts. Irgendwie glaube ich nicht, dass das beabsichtigt ist... Das stimmt allerdings, Danke. Hab die zweite (-lt) gegen -le getauscht :-) Wieso nimmst Du eigentlich ueberhaupt ein elif, wenn es doch ein einfaches else auch tut? Da sparst Du dann nicht nur die zweite Bedingung, sondern auch noch das zweite then... Ganz einfach, das hab ich eingebaut, da ich mir nicht sicher war, dass der Test funktioniert. Lasse ich die zweite Abfrage weg, läuft die Sicherung wenn: 1. die Bedingung der ersten Abfrage nicht erfüllt ist (das wäre o.k.) 2. ein Fehler in der Abfrage ist (wie eben in diesem Fall) So dass also das Script u.U. versuchen würde auf eine Volle Festplatte zu schreiben... Gruß Ulrich P.S. im Prinzip kann ich die 2. Bedingung also jetzt auch wieder rausnehmen. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Philipp Meier schrieb: Ulrich Fürst schrieb: P.S. Das von Phillip vorgeschlagene `du -sm | cut -d' ' -f1` funktioniert nicht. Nur so interessehalber: Warum eigentlich nicht? Cut erkennt ein leerzeichen nicht als trenner an und interpretiert zahl . dann doch als ein Feld und übergibt es folglich ganz? Oder liegt das an etwas anderem? Cut-and-paste-Fehler von mir, du trennt mit Tabulater, korrekt war: Ja schon, aber cut -d' ' ersetzt den Tabulator durch ein Leerzeichen? Und dadurch ist das erste Feld (-f1) die komplette Ausgabe, weil Felder nicht durch Leerzeichen getrennt werden dürfen? Mir geht's jetzt einfach um das tiefere Verständnis von cut (die Man-Page hab ich gelesen) und nicht mehr um das Script an sich. Gruß Ulrich -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Also erst mal zum Anfang, das Script-Problem ist gelöst (siehe andere Mails) aber ich lerne gerne noch dazu. Heike C. Zimmerer schrieb: Ulrich Fürst [EMAIL PROTECTED] writes: Heike C. Zimmerer schrieb: Eine Lösungsmöglichkeit: set `du -sm` if [ $1 -gt 7500 ]; then Geht leider nicht, hatte ich schon probiert (sämtliche Variationen von Anführungszeichen) Geht nicht ist nicht besonders aussagekräftig. [EMAIL PROTECTED]:~$ du -sm 1317. [EMAIL PROTECTED]:~$ set `du -sm` [EMAIL PROTECTED]:~$ echo $1 [EMAIL PROTECTED]:~$ if [ $1 -gt 1317 ]; then echo ja; else echo noi; fi noi [EMAIL PROTECTED]:~$ if [ $1 -gt 1316 ]; then echo ja; else echo noi; fi ja Wieso Anführungszeichen? Auf die Backticks kommt es an. Sorry, ich meinte die Anführungszeichen um $1 in der Abfrage. Aber egal, war sowieso zu voreilig. Es funktioniert sowohl mit als auch ohne Anführungszeichen um $1. Wo liegt den der Unterschied zwischen set `befehl` und variable=`befehl`? Bzw. in welchem manual finde ich zu set etwas? Gruß Ulrich -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Am Donnerstag, 3. Juni 2004 17:32 schrieb Ulrich Fürst: Philipp Meier schrieb: Ulrich Fürst schrieb: P.S. Das von Phillip vorgeschlagene `du -sm | cut -d' ' -f1` funktioniert nicht. Nur so interessehalber: Warum eigentlich nicht? Cut erkennt ein leerzeichen nicht als trenner an und interpretiert zahl . dann doch als ein Feld und übergibt es folglich ganz? Oder liegt das an etwas anderem? Cut-and-paste-Fehler von mir, du trennt mit Tabulater, korrekt war: Ja schon, aber cut -d' ' ersetzt den Tabulator durch ein Leerzeichen? Und dadurch ist das erste Feld (-f1) die komplette Ausgabe, weil Felder nicht durch Leerzeichen getrennt werden dürfen? Wenn Du cut mit der Option -d einen Feldtrenner mitgibst, dann wird _nur_ dieser genutzt. Ohne Angabe von -d wird per Default der Tabulator genommen. Da die Angaben bei du mit Tab getrennt sind, kann ein cut -f1 -d nicht funktionieren - es ist eben kein Leerzeichen vorhanden. Du kannst Dir im Zweifel das auch angucken: [EMAIL PROTECTED]:~/Documents du -sm | od -cx 000 3 \t . \n 0933 0a2e 004 Da siehst Du den Tabulator. Jan
Re: Probleme mit bash-Script
Jan Trippler schrieb: Wenn Du cut mit der Option -d einen Feldtrenner mitgibst, dann wird _nur_ dieser genutzt. Ohne Angabe von -d wird per Default der Tabulator genommen. Da die Angaben bei du mit Tab getrennt sind, kann ein cut -f1 -d nicht funktionieren - es ist eben kein Leerzeichen vorhanden. Du kannst Dir im Zweifel das auch angucken: [EMAIL PROTECTED]:~/Documents du -sm | od -cx 000 3 \t . \n 0933 0a2e 004 Da siehst Du den Tabulator. In man cut steht aber doch: -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter wenn ich also -d schreibe müsste er den vorhandenen Tabulatur gegen ein Leerzeichen austauschen. Oder verstehe ich das (anscheinend) falsch? Gruß Ulrich -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Am Donnerstag, 3. Juni 2004 20:34 schrieb Ulrich Fürst: In man cut steht aber doch: -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter wenn ich also -d schreibe müsste er den vorhandenen Tabulatur gegen ein Leerzeichen austauschen. Oder verstehe ich das (anscheinend) falsch? Ja. cut tauscht gar nichts aus - er nutzt den vorgegebenen Feldtrenner, um Dir z. B. Feld 1 (cut -f1) aus der Eingabezeile ermitteln zu können. Wenn Du cut sagst: Nimm als Trennzeichen zwischen den Feldern den Blank und in der Eingabezeile gibts keinen, dann folgert cut haarscharf: Aha - nur ein Feld da. cut ist ein Messer - es schneidet Teilchen aus und sonst nix. Der Feldtrenner (Option -d) ist lediglich sozusagen die Stelle, an der das Messer angelegt wird. Hast Du schon mal ein Messer gehabt, was Dir an der Stelle, wo Du den Käse schneidest ein Stück Bratwurst einfügt? ;-) Jan
Probleme mit bash-Script
Hallo allerseits! ich wollte in einem Script zur Datensicherung eine Abfrage einbauen ob auf dem Zieldatenträger noch genügend Platz ist. Meine Lösung wäre folgende gewesen: belegt=`du -sm` if [ $belegt -gt 7500 ] then echo echo Bitte erst alte Sicherungen löschen! echo exit 1; elif [ $belegt -lt 7500 ] then echo echo Sicherung beginnt ... echo fi (Herauskommen soll: wenn die Platte zu mehr als 7500 MB belegt ist erfolgt nur eine Warnung sonst wird gesichert) Ich bekomme aber die Fehlermeldung line 11: [: too many arguments (das ist im Script die if-Zeile (dto. bei der anderen). Offensichtlich ergibt du -sm nicht eine Zahl sondern mehrere? Wie kann ich das verhindern? TIA Ulrich -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Ulrich Fürst schrieb: Hallo allerseits! ich wollte in einem Script zur Datensicherung eine Abfrage einbauen ob auf dem Zieldatenträger noch genügend Platz ist. Meine Lösung wäre folgende gewesen: belegt=`du -sm` if [ $belegt -gt 7500 ] then echo echo Bitte erst alte Sicherungen löschen! echo exit 1; elif [ $belegt -lt 7500 ] then echo echo Sicherung beginnt ... echo fi (Herauskommen soll: wenn die Platte zu mehr als 7500 MB belegt ist erfolgt nur eine Warnung sonst wird gesichert) Ich bekomme aber die Fehlermeldung line 11: [: too many arguments (das ist im Script die if-Zeile (dto. bei der anderen). Offensichtlich ergibt du -sm nicht eine Zahl sondern mehrere? Wie kann ich das verhindern? beleget=`du -sm | cut -d' ' -f1` -billy. -- Meisterbohne Meisterbohne GbR, Küfner, Mekle, Meier Tel: +49-731-399 499-0 eLösungen Söflinger Straße 100 Fax: +49-731-399 499-9 89077 Ulm http://www.meisterbohne.de/ -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Probleme mit bash-Script
Am Mittwoch, 2. Juni 2004 17:15 schrieb Ulrich Fürst: ich wollte in einem Script zur Datensicherung eine Abfrage einbauen ob auf dem Zieldatenträger noch genügend Platz ist. Meine Lösung wäre folgende gewesen: belegt=`du -sm` if [ $belegt -gt 7500 ] then echo echo Bitte erst alte Sicherungen löschen! echo exit 1; elif [ $belegt -lt 7500 ] then echo echo Sicherung beginnt ... echo fi (Herauskommen soll: wenn die Platte zu mehr als 7500 MB belegt ist erfolgt nur eine Warnung sonst wird gesichert) Ich bekomme aber die Fehlermeldung line 11: [: too many arguments (das ist im Script die if-Zeile (dto. bei der anderen). Offensichtlich ergibt du -sm nicht eine Zahl sondern mehrere? Wie kann ich das verhindern? [EMAIL PROTECTED]:~/Development/www/progs du -sm 1 . In der Variablen $belegt steht also 1 . - da Du nicht quotest, kriegt der test folgendes zu sehen: [ 1 . -gt 7500 ] Abhilfe: belegt=`du -sm | cut -f1` Jan
Re: Probleme mit bash-Script
Ulrich Fürst [EMAIL PROTECTED] writes: ich wollte in einem Script zur Datensicherung eine Abfrage einbauen ob auf dem Zieldatenträger noch genügend Platz ist. Meine Lösung wäre folgende gewesen: belegt=`du -sm` if [ $belegt -gt 7500 ] then [..]echo elif [ $belegt -lt 7500 ] Ich bekomme aber die Fehlermeldung line 11: [: too many arguments (das ist im Script die if-Zeile (dto. bei der anderen). Offensichtlich ergibt du -sm nicht eine Zahl sondern mehrere? Wie kann ich das verhindern? Du brauchst doch nur du -sm von Hand ausführen, um zu sehen, dass es mehr zurückliefert als nur eine Zahl. Da ist doch nichts Schwieriges dran. Eine Lösungsmöglichkeit: set `du -sm` if [ $1 -gt 7500 ]; then Was macht dein Skript übrigens, wenn es exakt 7500 MB sind? Gar nichts. Irgendwie glaube ich nicht, dass das beabsichtigt ist... Gruß, Heike -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)