PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit bash if-Anweisung, wenn Text-File mit PHP erzeugt und Variabele aus TXT?



netlinker
10-12-2003, 15:55
Hallo,
ich habe ein Problem mit if-Anweisungen in meinem Bash-Script.
Ich lese die Variabele "test" aus einer Text-Datei ein.
Die Fehler-Quelle, scheint daran zu liegen, wie ich die Textdatei erzuge.
Wenn ich die Text per Hand schreibe funktioniert das Script (Ausgabe wie im 2. fall).
Jedoch erzeuge ich die Dateien via PHP.

Wäre supper wenn ihr da
Hier der Teil des PHP-Scripte:
// Schreiben des neuen Dateiinhaltes
if($action==update){
unlink($filename);
$file=fopen($filename,"w+");
fwrite($file,$text);

fclose($file);
?>
//Ende Schreiben
PHP Version 4.0.6


bash --version
GNU bash, version 2.05.0(1)-release (sparc-suse-linux)
Copyright 2000 Free Software Foundation, Inc.

-------------------------------------------------------------
#!/bin/bash

test=$(cat /opt/ftp-saver/ipliste.txt | grep -n .| grep ^2: | awk {'print$4'}
# oder test=`cat /opt/ftp-saver/ipliste.txt | grep -n .| grep ^2: | awk {'print$4'}`
# oder test="`cat /opt/ftp-saver/ipliste.txt | grep -n .| grep ^2: | awk {'print$4'}`"


echo "test $test"
if [ $test = SNMP_C ]; then
echo "sdfsdfsdfgfsdgsdfggdfgfdfsdfdfsgdsfgsdfgsdfgsdfgsd fgsdgdsfgsdfgsdgf"
fi

Ergibt:
#./te.sh
test SNMP_C

-------------------------------------------------------------

#!/bin/bash

test=SNMP_C
echo "test $test"
if [ $test = SNMP_C ]; then
echo "sdfsdfsdfgfsdgsdfggdfgfdfsdfdfsgdsfgsdfgsdfgsdfgsd fgsdgdsfgsdfgsdgf"
fi

Ergibt:
#./te.sh
test SNMP_C
sdfsdfsdfgfsdgsdfggdfgfdfsdfdfsgdsfgsdfgsdfgsdfgsd fgsdgdsfgsdfgsdgf

---------------------------------------------------




MfG Björn

Hans-Georg Normann
14-12-2003, 10:12
Also das mit dem test wird hier einigen misfallen, weil test auch syntaktischer Bestandteil vom if Kommando ist. Nicht grundsätzlich falsch, erschwert aber die Lesbarkeit eines Skriptes.

Du sagst, wenn du die Datei mit Hand erzeugst, dann läuft es. Was gibt denn
file deine.txt aus? Kannst du dir die Dateien einmal mit einem Hexeditor, z. B. hex anzeigen lassen? Sind da versteckte Zeichen. Gibt der Aufruf des Scriptes eine Fehlermeldung aus?

Hans

fork
14-12-2003, 13:59
Tipps:
- Hau mal vor die verdaechtigen Skriptpassagen ein "set -x" rein das Du die Zeilen vor der Ausführung angezeigt bekommst. Aufheben mit "set +x"
- Mach mal ne Ausgabe vor dem Vergleich mit Begrenzerzeichen das man sieht ob evtl. führende oder folgende Leerzeichen stören:
echo "DEBUG: "x${var1}x x${var2}x"
- test wuerde ich meine Variablen nicht unbedingt nennen, kann leicht mal irgendwie sein das das mit dem bash-alias "test" Probleme gibt.
- Wenn Du's nicht rausbekommst haenge mal deine Dateien hier als Anhang rein.

netlinker
15-12-2003, 00:55
Hallo,

schon mal dankt für die Tips.
Ich werde erst in nen paar Tagen erst wieder an die Kiste kommen, auf dem ich das Skript laufen lasse.
Ich werde dann die weitern Angaben hier ablegen.
Thx Björn