Shell Script läuft nicht, warum?

3 Antworten

Es muß unbedingt auf die korrekten Leerzeichen geachtet werden:

if [ conditional ]

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

Woher ich das weiß:Eigene Erfahrung – Ich benutze seit 2007 Linux und habe LPIC101 und LPIC102

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

0
@AlexAA295
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

0
@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

1

Das "then" muss hinter dem ";" der vorherigen Zeile stehen - nicht auf einer neuen Zeile.
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-6.html

Woher ich das weiß:Berufserfahrung

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'

0

Was möchtest Du wissen?