Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Verständnisfrage bei C-Shell programmierung

Empfohlene Antworten

Veröffentlicht

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

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

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:

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

Hi!

DANKE! Das war echt sehr sehr verständlich erklärt. Ich denke damit komme ich jetzt klar :)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.