Shell Script läuft nicht, warum?
#!/bin/bash
GOOGLE=http www.google.de
;
echo $GOOGLE;
OLD_GOOGLE=cat website.html
;
if["$GOOGLE" = "$OLD_GOOGLE"];
then
echo "ES IST WAS ANDERES"
else
echo "DOCH NICHT"
fi
echo $GOOGLE | cat > website.html;
firefox website.html;
Bei dem Script kommt es zur Fehlermeldung:
./test.sh: Zeile 6: Syntaxfehler beim unerwarteten Wort »then«
./test.sh: Zeile 6: `then'
Ist mein erstes Script, also sorry falls das ein absoluter Anfängerfehler ist! ;)
Achja um die Frage zu beantworten, was das Script machen soll:
Macht ein HTTP Request bei Google und vergleicht die Response mit einer vergangenen gespeichertem Response ob sie gleich sind bzw. ob sich was verändert hat (Sinn gibt es nicht :D).
4 Antworten
Hallo
#!/bin/bash
GOOGLE=
http www.google.de
;
- 1. Die Variable sollte wohl eher so aussehen: GOOGLE="https://www.google.de"
- 2. Das Semikolon ist hier unnötig
echo $GOOGLE;
OLD_GOOGLE=
cat website.html
;
- 3. Das echo soll wohl testen was in der Variablen steht; wenn es funktioniert kann es dann aber auch wieder weg.
- 4. Die Variable: OLD_GOOGLE=$(cat website.html) soll so sein.
- 5.Wozu eine html-Datei in der Konsole ansehen?
- 6. Auch dieses Semikolon ist wieder unnötig
if["$GOOGLE" = "$OLD_GOOGLE"];
then
echo "ES IST WAS ANDERES"
else
echo "DOCH NICHT"
fi
- 7. Ist total falsch:
if [ "$GOOGLE" = "$OLD_GOOGLE" ];
then
echo "ES IST WAS ANDERES"
else
echo "DOCH NICHT"
fi
Wenn Du prüfen möchtest ob die Variablen $GOOGLE und $OLD_GOOGLE unterschiedlich sind, dann gibt es verschiedene Wege, einer sähe so aus:
if [ "$GOOGLE" != "$OLD_GOOGLE" ];
then
echo "Die Variablen unterscheiden sich"
else
echo "Die Variablen haben den gleichen Inhalt"
fi
- 8. Woher kommt denn der Inhalt von website.html, steht da nur die URL der Webseite drinnen oder ist die Webseite selbst darin abgespeichert?
echo $GOOGLE | cat > website.html;
- 9. Damit wird der Inhalt der angelegten Variablen in die Datei website.html geschrieben, wozu?
firefox website.html;
- 10. und hiermit dann an firefox übergeben.
Macht ein HTTP Request bei Google und vergleicht die Response mit einer vergangenen gespeichertem Response ob sie gleich sind bzw. ob sich was verändert hat (Sinn gibt es nicht :D).
- 11. Ein Request, mit welchem Ziel?
- 12. Response ist was in Deinem Fall?
curl https://www.google.de
wäre vielleicht einfacher.
Linuxhase
1. Das wurde von gutefrage.net umgeändert, eigentlich war es GOOGLE=` www.google.de`
Du möchtest eine Webadresse von der Shell ausführen lassen? - Das geht nicht!
8. Der Quellcode wurde davor gespeichert
Der Quellcode; Du meinst also den Inhalt einer Webseite, steht in website.html ?
9. Damit die veränderungen übernommen werden
Von woher kommt denn der Inhalt von website.html und wann wird dieser erstellt?
11. Den Quellcode der Website zu bekommen
Der Inhalt von www.google.de ändert sich doch gar nicht; was ist also der Zweck?
12. Die Antwort von www.google.de
Die Antwort auf welche (An)Frage denn?
Doch nicht etwa von:
echo www.google.de | cat > website.html;
Das ist doch Unsinn, guckst Du:
echo https://www.google.de
gibt aus:
https://www.google.de
Das cat in dem Kommando ist unnötig wenn Du die Ausgabe des echo Kommandos sowieso in eine Datei umleitest:
echo "https://www.google.de" > website.html
wobei damit ja nur die Domain in der Datei landet und das ist ja kein html; somit ist die Endung "falsch".
Und gut okay danke, dann probiere ich es mit dem Tool noch mal, bin halt noch neu :D
Wenn Du mal möglichst exakt beschreibst was das Ziel ist und wie die Ausgangssituation aussieht kann man eventuell einen Weg finden der einfacher ist.
Linuxhase
Das Ziel ist es, die Website von Google mit der Website von Google vor 5 Minuten zu vergleichen, ob sich irgendetwas verändert hat. Wie o.g. handelt es sich hierbei um eine "Aufgabe" mit keinem Sinn, lediglich die Heranführung an den/die Syntax/Handhabung mit Skripten bei Linux. :D
Die Lösung wurde bereits gefunden, ich habe vergessen bei der if - Abfrage die Leerzeichen zu verwenden und nun klappt es. Ich habe noch dazu einige unnötige und echt dumme Verwendung wie 'echo "www.google.de" > website.html entfernt bzw. verbessert', wo ich mir auch so im Nachhinein denke, hae wtf wo macht das denn Sinn? xD
Du möchtest eine Webadresse von der Shell ausführen lassen? - Das geht nicht!
Dort habe ich vergessen mit reinzuschreiben das ich vorher das Tool "http" aus httpie benutzt habe.
Danke aber für die Bemühungen! :D
Es muß unbedingt auf die korrekten Leerzeichen geachtet werden:
if [ conditional ]
Das "then" muss hinter dem ";" der vorherigen Zeile stehen - nicht auf einer neuen Zeile.
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-6.html
Hab ich schon probiert, kommt folgende Fehlermeldung:
./test.sh: Zeile 5: Syntaxfehler beim unerwarteten Wort »then«
./test.sh: Zeile 5: `if["$GOOGLE" = "$OLD_GOOGLE"]; then'
if[
muss
if [
heißen.
Hola,
1. Das wurde von gutefrage.net umgeändert, eigentlich war es GOOGLE=`www.google.de`
8. Der Quellcode wurde davor gespeichert
9. Damit die veränderungen übernommen werden
11. Den Quellcode der Website zu bekommen
12. Die Antwort von www.google.de
Und gut okay danke, dann probiere ich es mit dem Tool noch mal, bin halt noch neu :D