kann auf der Shell kein Skript aufrufen

Status
Für weitere Antworten geschlossen.

hajolino

Benutzer
Mitglied seit
18. Sep 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich versuche seid einiger Zeit ein skript aufzurufen, aber es geht irgendwie nicht.

ich bin über SSH als root eingeloggt.
Hier der Terminal-Inhalt mit allen infos (ganz oben das skript mit more):

DS207p> more hello.sh
#!/bin/sh
echo "Hello world"


DS207p> cd /volume1/public
DS207p> ls -l
total 12
-rwxr-xr-x 1 root root 33 Jan 12 19:33 hello.sh
DS207p> ls /bin/l* -l
lrwxrwxrwx 1 root root 7 Jan 3 17:26 /bin/ln -> busybox
lrwxrwxrwx 1 root root 7 Jan 3 17:26 /bin/login -> busybox
lrwxrwxrwx 1 root root 7 Jan 3 17:26 /bin/ls -> busybox
DS207p> /volume1/public/hello.sh
-ash: /volume1/public/hello.sh: not found

DS207p> /bin/sh


BusyBox v1.16.1 (2010-10-23 01:59:53 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/volume1/public #

Folgende Punkte sind IMHO berücksichtigt:
Das skript enthält eine Pfadangabe auf die sh (siehe die more Anweisung)
eine /bin/sh existiert
Das Skript ist ausführbar und gehört mir
der absolute Pfad stimmt.

Warum will das nicht ? :confused:

Gruß hajolino
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
13.999
Punkte für Reaktionen
264
Punkte
373
Hallo,
womit hast Du das Script erstellt? Wenn mit Windows Editor, dann stimmen die Zeilenenden nicht, notepad++ runterladen und als Unix-File speichern.

Gruß Götz
 

Ap0phis

Benutzer
Mitglied seit
16. Dez 2010
Beiträge
6.731
Punkte für Reaktionen
3
Punkte
158
Eingabe: sh hello.sh
 

hajolino

Benutzer
Mitglied seit
18. Sep 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo,

vielen Dank für die Rückmeldungen. Beides hat geholfen.

Windows:
Wars zwar nicht, aber das Ur-Skript stammte per Drag/drop aus einem Webforum. Was auch immer da an CR/LF dann drin war.
Eine Nachbearbeitung mit joe hat die Fehlermeldung beseitigt.

Mit sh davor gings dann auch :rolleyes:
DS207p> sh hello.sh
Hello world
DS207p> hello.sh
-ash: hello.sh: not found
DS207p>


Eine letzte Frage zum Schluss:
Warum mag sh keine Leerzeichen in shell-skripten? Viele der Skripte in diesem Forum haben der Optik halber Leerzeilen drin..
Hier dasselbe mit einer Leerzeile zwischen den echos:
DS207p> more hello.sh
#!/bin/sh
echo "Hello world"

echo "zweite Zeile"
#Ende
DS207p> sh hello.sh
Hello world
: not foundine 3:
zweite Zeile
DS207p>

Nun, bei einem Cronjob landet die Ausgabe natürlich im Nirwana und stört nicht wirklich. Oder?

Gruß,
Hajolino
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
13.999
Punkte für Reaktionen
264
Punkte
373
Hallo,
Rich (BBCode):
DS207p> hello.sh   
-ash: hello.sh: not found
diese Reaktion ist richtig, da /volume1/public nicht in $PATH ist, das muß dann heißen
Rich (BBCode):
./hello.sh
Leerzeilen sind eigentlich gar kein Problem, kannst Dir ja mal die Scripte unter /usr/syno/etc/rc.d anschauen. Vermutlich hast Du nicht einfach nur einen Zeilenumbruch drin, da muß noch was anderes sein.
Rich (BBCode):
DS-209plusII> more hallo.sh
#!/bin/sh
echo "Hallo World."

echo "Zweite Zeile."
#Ende
DS-209plusII> ./hallo.sh
Hallo World.
Zweite Zeile.
DS-209plusII>

Gruß Götz
 

hajolino

Benutzer
Mitglied seit
18. Sep 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Jau!

Der Hex-Editor hat ein 0x0D 0x0A aus DOS-Zeiten ans Licht gebracht.
(die DOS/Windows-Variante des Zeilenvorschubs.)
Nachdem ich die 0x0D durch 0x0A ersetzt hatte läuft alles wunderbar.
(Das ist dann die unix-Variante des Zeilenvorschubs, nur 0xA ohne 0x0D)

--> jetzt ist alles wieder logisch.

Gruß,

hajolino
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat