Frage von Pasi09, 30

Warum funktioniert mein shell programm nicht?

Wollte gerade mal mit shell anfangen (nutze linux und windows zugleich) Hier der Auszug:

#! /bin/sh  
echo ""Hello World""

Was ist der Fehler?

Expertenantwort
von guenterhalt, Community-Experte für Linux, 10

eine Fehler kann ich darin nicht erkennen. Es ist zwar ungewöhnlich, dass Leerzeichen zwischen #!  und /bin/sh eingebaut sind und auch zwei mal "" sind überflüssig.

Das alles ist aber kein Grund, dass diese Zeilen in einer Script-Datei nicht ausgeführt werden.

Hast du der Script-Datei auch Ausführungsrechte gegeben?

ls -l <Name-der-Datei> 

sollte mit 

-rwx     beginnen.

Führe mal

chmod +x <Name-der-Datei> 

aus und starte erneut.

Antwort
von Linuxhase, 11

Hallo

#! /bin/sh 
echo ""Hello World""

Ich kann in diesem "Script" nur einen einzigen Fehler entdecken, da ist ein Leerzeichen zwischen dem SheBang und dem Pfad zum Interpreter. ¹

Du kannst Deine Scripte aber auch hier http://www.shellcheck.net testen lassen :-)

Weiterhin ist es gar nicht notwendig den Text in Anführungsstriche , schon gar nicht Doppelte, zu setzen (Das braucht man eigentlich nur wenn man eine Variable damit befüllen möchte) Man kann es aber, so man etwas hervorheben möchte so schreiben:

echo "Hallo 'schöne' Welt"

Oder, wenn es farblich sein soll:

echo -e "\e[31mHallo Welt\e[0m"

Linuxhase

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

¹ Die SHell hast Du aber installiert bzw. einen Symlink zur BaSH gesetzt?

Kommentar von Pasi09 ,

ja aber danke habe noch keine Shell Erfahrung

Kommentar von Pasi09 ,

wollte Linux automatisieren

Kommentar von Linuxhase ,

@Pasi09

ja aber danke habe noch keine Shell Erfahrung

Alle haben irgendwann angefangen. Wichtig: Immer das Ziel des Scriptes im Auge behalten!

wollte Linux automatisieren

Was denn genau?

Linuxhase

Antwort
von LeonMrBonnie, 30

Das nach dem "echo" darf nicht eingeklammert sein, soweit ich weiß.

Mfg Leon

Antwort
von Berny96, 23

versuch mal mit:

#!/bin/bash
echo "Hello World!"
Antwort
von BananenFrager22, 22

echo Hello World

also der Text ohne "" wie bei anderen Programmiersprachen.

Kommentar von Pasi09 ,

Das terminal öffnet sich nur kurz und schließt sich wieder

Kommentar von Pasi09 ,

Also wenn ich per terminal eingebe

cd User

cd Schreibtisch

sh Hello world.sh

geht es

Kommentar von BananenFrager22 ,

sh Hello World.sh müsste doch auch ohne cd gehen.

denn mit cd änderst du den Pfad, spielt aber keine Rolle bei einem Terminal output...

Kommentar von Pasi09 ,

ich gebe es manuell ein

Kommentar von Pasi09 ,
#!/bin/sh
I=1 # Variable I auf 1 setzen
while test $I -le 100 # While-Schleife, externes Kommando test I<=100
do
echo $I # externes Kommando echo, gibt I aus
I=`expr $I + 1` # externes Kommando expr, Zuweisung der Ausgabe von expr an I
done
Kommentar von Pasi09 ,

Dieses script geht (Wikipedia)

Kommentar von Linuxhase ,

@Pasi09

Also wenn ich per terminal eingebe [....] sh Hello world.sh geht es

Das glaube ich nicht, denn mit dem Leerzeichen im Dateinamen würde die SHell versuchen eine Datei/ein Script mit dem Namen Hello auszuführen und diesem dann world.sh als Parameter übergeben!

Der Aufruf müsste dann nämlich so aussehen:

sh Hello\ world.sh  ¹

Linuxhase

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

  • ¹ Der Backslash (Rückwärtsschrägstrich) macht das darauf folgende (Leer-)Zeichen zum Teil des Dateinamens.
  • Woher sollte die SHell denn sonst wissen wo der Dateiname aufhört und der (eventuelle) Parameter beginnt!?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten