kann keinen Text und Array in eine Datei speichern

T

tux_rules

Eroberer
kann mir mal bitte einer sagen was daran falsch ist?

syntax error near unexpected token `>>'
` echo "Server '${server[$i]}' is on" >> $LOGFILE'
ich hab das oft ein meinem Code drinnen das ich einen Text oder einen Array in eine datei schreibe und nur bei der stelle schreibt er mir den fehler.
 
sorry das war die meldung von der konsole im code sieht das so aus:
echo "Server '${server[$i]}' is on" >> $LOGFILE

aber ich verstehe nicht warum das nur an der stelle es ist und an einer anderen nicht wo der gleiche code ist
 
mache die hochkommatas in dem " ... " string mal weg ... ich glaub die brauchst du bei einem sting mit doppelten anführungszeichen nicht

evtl liegts da dran
 
danke aber das brachte auch nichts. ich hab schon fasst die vermutung das die bash mit dem code überfordert ist. weil lätze woche gab es da keine probleme und da war der code um vieles kleiner.
 
Eventuell tritt der Fehler einfach in einer Zeile vor der von dir geposteten auf. Wäre durchaus sinnvoll zumindest die Zeilen direkt vor der Anweisung (am Besten das gesamte Skript) zusätzlich zu posten...
Die Vermutung wird dadurch erhärtet, dass du dieselbe Zeile öfters im Skript ohne Probleme ausführst, deswegen bitte Kontext posten...
 
wenn ich den ganzen code poste dann werdet ihr mich da erschlagen weil es über 400 zeilen sind. der code ist eigentlich das erste wirkliche prog das ich in der bash mache und es mir ein bischen peinlich ist wie der code ausschaut

Code:
        while [ $i -le $max ]
         do
               if   [ "$(vmware-cmd "$sata"/"${server[$i]}" getstate)" == "getstate() = on" ] then
                        echo "Server is on:'${server[$i]}'."
                        echo ("Server '${server[$i]}' is on") >> $LOGFILE
 
Hi,

Code:
if [ "$(vmware-cmd "$sata"/"${server[$i]}" getstate)" == "getstate() = on" ] then

ich denke da liegt der Fehler. Erstens fehlt IMHO ihnter der schliessenden eckigen Klammer ']' noch ein Semikolon ';', und zweitens versteht test ([]) soweit ich weiss kein '=='. Fuer einen Stringvergleich muesste das '-eq' sein, wenn ich mich nicht irre.

edit:
Nonsense, fuer Stringvergleiche muss das natuerlich '=' sein, bei Integervergleichen war's '-eq'.

mfg,
bytepool
 
Zuletzt bearbeitet:
danke. das mit nach ]; hatte er auch gemäckert das ihm der ; nicht passt. ich bin schon am verzweifeln jetzt kommen die ganzen fehler die noch nie gekommen sind und an denen ich auch nichts geändert habe. werde das gleich morgen machen. Danke an alle!!!!
 
Dann geh dein Skript systematisch nach diesem (und strukturgleichen) Fehler durch.
if <- ist ein einzelner "Befehl", von daher musst du das then entweder auf die nächste Reihe packen (so wie du es bei deinem while-do Konstrukt gemacht hast), oder, um mehrere Befehle stumpf hintereinander auf der selben Reihe auszuführen: ein Semicolon dazwischen.
Code:
if true; then echo foo; fi

Der Fehler kommt übrigens wegen der Rundklammern um das echo Argument. (Rundklammern öffnen subshells....) Was übrigens in Widerspruch mit deiner Aussage von vorher steht, wo du meintest, dass das hier die Zeile sei:
Code:
echo "Server '${server[$i]}' is on" >> $LOGFILE
Jetzt scheint sie zu
Code:
echo ("Server '${server[$i]}' is on") >> $LOGFILE
"mutiert" zu sein...

Und noch ein scoping Beispiel zur Verdeutlichung des subshell Kommentars:
Code:
foo=bar; echo $foo; (foo=neh; echo $foo); echo $foo
 

Ähnliche Themen

Dateien löschen mit negierun

Ausführbare C-Datei von Mac OS auf Embedded Linux ausführen

Queue für copy Script

skript zum löschen doppelter dateien

Proftpd/TLS Probleme

Zurück
Oben