Jermuk
Anmeldungsdatum: 2. Dezember 2008
Beiträge: 23
|
Hallo an alle: ich habe mal verscuht ein Broadcast Message Script zu schreriben: | #!/bin/sh
echo Bitte geben sie einen Text ein, den sie an alle Benutzer schicken wollen:
touch msg.txt
read message
echo $message > msg.txt
wall msg.txt
rm msg.txt
|
Leider zeigt er mir immer an: ": bad variable name" Vielen Dank im Voraus, Gruß Jermuk
|
BodomBeachTerror
Anmeldungsdatum: 24. März 2008
Beiträge: 788
|
Auch wenn du einen anderen Namen benutzt?
|
BadBoy
Anmeldungsdatum: 25. Oktober 2007
Beiträge: 479
|
die man-Page zu wall spuckt mir das hier aus:
SYNOPSIS
wall [-n] [ message ] damit wäre das Schreiben der Datei unnötig
|
Jermuk
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2008
Beiträge: 23
|
BadBoy schrieb: die man-Page zu wall spuckt mir das hier aus:
SYNOPSIS
wall [-n] [ message ] damit wäre das Schreiben der Datei unnötig
|
wall: we can't read Hallo
wall: we can't read "Hallo"
wall: we can't read 'Hallo'
|
| #!/bin/sh
echo Bitte geben sie einen Text ein, den sie an alle Benutzer schicken wollen:
touch msg.txt
read text
echo $text > msg.txt
wall msg.txt
rm msg.txt
|
": bad variable name"
"rm: cannot remove msg.txt': No such file or directory"
Dies sind die Fehler!
Danke für die schnellen Antworten!
Auch wenn sie nichts gebracht hatten!
Gruß Jermuk
|
The-Compiler
Anmeldungsdatum: 21. April 2006
Beiträge: 2640
Wohnort: Winterthur, Schweiz
|
Jermuk schrieb: | echo Bitte geben sie einen Text ein, den sie an alle Benutzer schicken wollen:
|
hier umbedingt den Text mit Gänsefüsschen einschliessen, das ist notwenig wenn der Text Leer/Sonderzeichen drin hat. | touch msg.txt
read text
echo $text > msg.txt
wall msg.txt
rm msg.txt
|
Das würd ich ja eher so schreiben:
| read text
echo "$text" | wall
|
Flo
|
Jermuk
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2008
Beiträge: 23
|
: bad variable name
: not found 5: wall
Jetzt kommt dies! Ich habe einfach auskommentiert:
| #!/bin/sh
echo "Bitte geben sie einen Text ein, den sie an alle Benutzer schicken wollen:"
#touch msg.txt
read text
echo "$text" | wall
#echo $text > msg.txt
#wall msg.txt
#rm msg.txt
|
Danke für die Antwort!
Aber das Problem ist immer noch nicht gelöst!
Schade! ☹ Gruß Jermuk
|
The-Compiler
Anmeldungsdatum: 21. April 2006
Beiträge: 2640
Wohnort: Winterthur, Schweiz
|
Also bei mir läufts ohne Probleme. Sicher dass du das Skript auch genau so hast wie hier? Flo
|
BadBoy
Anmeldungsdatum: 25. Oktober 2007
Beiträge: 479
|
hö? o_O
hab ich ne andere Wand? (=wall)
|
Jermuk
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2008
Beiträge: 23
|
Ja, ich habs genauso! Gruß Jermuk
|
The-Compiler
Anmeldungsdatum: 21. April 2006
Beiträge: 2640
Wohnort: Winterthur, Schweiz
|
Wie heisst die Nachricht mit dem ihr das Skript testet? Ausserdem füg mal am Anfang des Skripts ein set -x ein und gib mir dann die Ausgabe davon. Und ein ls -l /bin/sh wär mal noch gut zu wissen. Flo
|
Jermuk
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2008
Beiträge: 23
|
ls -l /bin/sh : lrwxrwxrwx 1 root root 4 2008-12-02 15:02 /bin/sh -> dash set -x : Illegal option -
|
jahb
Anmeldungsdatum: 10. April 2008
Beiträge: 238
Wohnort: Reinfeld
|
noch kürzer wäre natürlich | #!/bin/bash -x
echo "Bitte geben sie einen Text ein, den sie an alle Benutzer schicken wollen:"
read|wall
|
und das -x war für das sh bestimmt also : was ich allerdings durch ein /bin/bash (s.O.) ersetzten würde dann klappt es auf jeden Fall! Gruß Simon edit:
Argh vertan klappt doch nicht ohne variable! Aber ein | #!/bin/bash
read text
echo $text|wall
|
Funktioniert!
|
The-Compiler
Anmeldungsdatum: 21. April 2006
Beiträge: 2640
Wohnort: Winterthur, Schweiz
|
jahb schrieb: und das -x war für das sh bestimmt also :
Ne, das sollte mit set -x schon klappen. Ausserdem wird der shebang gar nicht ausgewertet wenn das Skript mittels sh gestartet wird.
Aber ein | #!/bin/bash
read text
echo $text|wall
|
Funktioniert!
Nicht wenn der text Sonderzeichen enthält, umbedingt wie oben in meinem Code das $text in echo $text in Gänsefüsschen einklammern! Flo
|
phst
Anmeldungsdatum: 24. Juni 2007
Beiträge: 527
|
Noch einfacher:
| #!/bin/bash
read text
wall <<< "$text"
|
|
Jermuk
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2008
Beiträge: 23
|
Danke für alle eure Antworten! Die Lösung war: #!/bin/sh
echo "Bitte geben sie einen Text ein, den sie an alle Benutzer schicken wollen:"
read text
echo $text|wall Aber hab ich den ein anderes "wall" ? Vielen Dank nochmal! Gruß Jermuk
|