SimonLZ Geschrieben 2. Februar 2007 Geschrieben 2. Februar 2007 Hallo zusammen, Ich habe folgendes "Entdeckung" gemacht, und zwar versende ich aus einem cshell script heraus eine email. Rufe ich das kommando mit "Befehls-Substitution" auf `cat tempfile |/usr/bin/mailx -r xxx@yyye.de -s "TEST" test@xyz.com` dann wird die Email 2mal versendet. und der Output mit #!/bin/csh/ ergbit: `cat tempfile |/usr/bin/mailx -r xxx@yyye.de -s "TEST" test@xyz.com` cat tempfile |/usr/bin/mailx -r xxx@yyye.de -s "TEST" test@xyz.com cat tempfile |/usr/bin/mailx -r xxx@yyye.de -s "TEST" test@xyz.com rufe ich es ohne `` auf, dann wird nur eine email versendet. Kann mir das einer erklären? Ich finde leider auch keine gute Erklärung was die `` so wirklich zu bedeuten ahben. Ich rufe alle externen Aufrufe damit auf :-/ Danke schonmal!! Simon Zitieren
Schlaubi Geschrieben 2. Februar 2007 Geschrieben 2. Februar 2007 Hallo, was steht denn in der Man-Page von csh dazu? Von Backticks umgebene Kommandos werden in einer Subshell ausgeführt. Um mehrerlei Probleme zu umgehen und die Übersichtlichkeit zu Wahren, verwende ich keine Backticks in der Shell (also Bash - ich arbeit nicht mit der csh), stattdessen mache ich das so: x="$(pwd)"; echo $x Zitieren
SimonLZ Geschrieben 5. Februar 2007 Autor Geschrieben 5. Februar 2007 Deine vorgeschlagene Syntax geht in der csh leider nicht :-/ das mit den Backticks habe ich jetzt einigermaßen verstanden. Allerdings noch nicht wirklich, was mir das bringt, dass die Befehle in einer Subshell ausgeführt werden, bzw. WARUM die Email 2x versendet wird, wenn ich den Befehl in einer Subshell ausführen lasse. Wäre klasse wenn du mir da nochmals auf die Sprünge helfen könntest. :byby: Zitieren
DevilDawn Geschrieben 6. Februar 2007 Geschrieben 6. Februar 2007 Die Backticks haben einen anderen Zweck. Das Kommando zwischen den Backticks wird ausgeführt und die Ausgabe desselben vom Script verwendet. #!/usr/bin/csh ls -1 /net/`hostname`/ Der obige code führt einerseits "hostname" aus, fügt die Ausgabe dann aber in den ls-Befehl ein. Heisst der Host also z.b. "birne", wird ein ls -1 /net/birne/ ausgeführt. Dein `cat foo | bla` führt also nicht nur eben dies aus, sondern auch noch das was das kommando als Ausgabe rauswirft. Das solltest du dir vielleicht mal angucken. Obwohl mailx eigentlich keine Ausgabe macht. Die Backticks sind also für deinen Zweck unsinnig. Das cat vor mailx erinnert mich immer an "cat datei | grep foo", tut aber natürlich. Ich empfehle #!/usr/bin/csh /usr/bin/mailx -r abs@dom.com -s "Betreff" empf@dom.com < tempfile Zitieren
SimonLZ Geschrieben 6. Februar 2007 Autor Geschrieben 6. Februar 2007 Hi! DANKE! Das war echt sehr sehr verständlich erklärt. Ich denke damit komme ich jetzt klar Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.