putty funktioniert, Skript nicht

Status
Für weitere Antworten geschlossen.

sowosamma

Benutzer
Mitglied seit
16. Jun 2009
Beiträge
565
Punkte für Reaktionen
0
Punkte
42
Hallo,

ich versuche mich gerade ein wenig mit Shell und bin gerade ratlos. Wenn ich folgendes in putty eingebe, werden mir die gewünschten Dateien angezeigt
Rich (BBCode):
DS109plus> QUELLE="/volume1/public/test/*.JPG"
DS109plus> ls $QUELLE
/volume1/public/test/Screenshot 20090702 No1.JPG
/volume1/public/test/Screenshot 20090702 No2.JPG
/volume1/public/test/Screenshot 20090702 No3.JPG
/volume1/public/test/Screenshot 20090702.JPG
/volume1/public/test/Screenshot 20090706.JPG

Wenn ich aber das gleiche in ein Skript eingebe und das Skript ausführe dann bekomme ich folgende Meldung
Rich (BBCode):
DS109plus> sh /volume1/public/test.sh
: No such file or directoryJPG

Es ist auch egal ob ich am Anfang #!/bin/sh oder #!/opt/bin/bash oder garnichts schreibe. Immer dieser Fehler.

Kann mir jemand das erklären? Und nein, ich habe mich nicht vertippt. Der Text ist mit copy-paste von putty in das Skript kopiert worden.

/Andi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Immer vor die Kommandos und die Dateien die kompletten Pfade schreiben: also statt ls -> /bin/ls usw. , das hilft später bei vielen Skripen Fehler vermeiden.

Zum Problem: Shell-Variablen gelten immer nur im Kontext der aufrufenden/aktiven Shell, wenn sie nicht vorher durch eine Eltern-Shell auf die export-Liste (mit export) gesetzt worden sind. Also noch eingeben: export QUELLE

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Zum Problem: Shell-Variablen gelten immer nur im Kontext der aufrufenden/aktiven Shell, wenn sie nicht vorher durch eine Eltern-Shell auf die export-Liste (mit export) gesetzt worden sind. Also noch eingeben: export QUELLE

Itari
Wenn ich den TS nicht falsch verstanden habe, dann stehen beide Codezeilen in der test.sh. Wären damit nicht beide im gleichen Kontext, nämlich jenem Namespace von test.sh?
 

sowosamma

Benutzer
Mitglied seit
16. Jun 2009
Beiträge
565
Punkte für Reaktionen
0
Punkte
42
exakt. Beide Zeilen stehen im gleichen Skript (test.sh)

Rich (BBCode):
#!/bin/sh
QUELLE="/volume1/public/test/*.JPG"
ls $QUELLE

Somit ist müsste das export doch nicht notwendig sein?... Ist es auch nicht. Da ich mit dem vi auf Kriegsfuß stehe habe ich das Skript mit dem Testeditor in Win erstellt und dann auf die DS kopiert. Hier kam immer der Fehler.
Jetzt habe ich aber mal export mit vi angefügt und später wieder gelöscht und siehe da es funktioniert. Scheinbar hat die DS mit Win ein Problem. Vielleicht ist das Skript DOS-konviguriert.
Gibt es denn ein Programm für Win mit dem man Linux-Skripte schreiben kann?

/Andi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Probiere doch mal den Nano oder mc auf der DS.

Für Windows brauchst einen Editor, der die Linux-Zeilenenden beherrscht: notepad++ oder PSPad und 100 weitere ... Es soll jetzt auch irgendeinen Editor bei Win7 geben, der das kann ...

Du kannst dir aber auch meinen Web-Editor installieren - gibt es als spk-Paket.

Itari
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Also bei mir funktioniert das o.a. Script einwandfrei.

gruss
dude
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
exakt. Beide Zeilen stehen im gleichen Skript (test.sh)

Rich (BBCode):
#!/bin/sh
QUELLE="/volume1/public/test/*.JPG"
ls $QUELLE
Somit ist müsste das export doch nicht notwendig sein?... Ist es auch nicht. Da ich mit dem vi auf Kriegsfuß stehe habe ich das Skript mit dem Testeditor in Win erstellt und dann auf die DS kopiert. Hier kam immer der Fehler.
Jetzt habe ich aber mal export mit vi angefügt und später wieder gelöscht und siehe da es funktioniert. Scheinbar hat die DS mit Win ein Problem. Vielleicht ist das Skript DOS-konviguriert.
Gibt es denn ein Programm für Win mit dem man Linux-Skripte schreiben kann?

/Andi
Autsch, hast du mit einem Win Editor ein Shell Script für die DS schreiben wollen? ;)
Wenn das kein guter Editor ist, der dich wählen lässt ob du Unix Zeilenendzeichen verwenden willst, fällst du damit auf die Nase (Notepad++ lässt dich beim Erstellen der Dateien wählen ob für Win, Unix oder Mac)
Oder du installierst dir einen Editor auf der DS via ipkg. Ich persönlich verwende immer nano, es gibt aber noch andere.

Gruss

tobi
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Die drei Zeilen erstellen sich fast von selbst per vi... ;) Web braucht dazu Windows?! ;) Wenns gar nicht anders geht kann man sowas wie http://www.dos2unix.org/ nutzen zum konvertieren. Auf "grossen" Linuxen gibts das auch für die shell.. ipkg hats leider nich.

gruss
dude
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Die drei Zeilen erstellen sich fast von selbst per vi... ;) Web braucht dazu Windows?! ;) Wenns gar nicht anders geht kann man sowas wie http://www.dos2unix.org/ nutzen zum konvertieren. Auf "grossen" Linuxen gibts das auch für die shell.. ipkg hats leider nich.

gruss
dude
Diese Idee von dos2unix wäre mit ein paar Zeilen php schnell gemacht (zumindest für die Zeilendzeichen). Allerdings bräuchte man dann dazu ipkg php damit man den php Shell Interpreter zur Verfügung hat.
So was in der Art
PHP:
#!/opt/bin/php
<?php
$file = file($argv[2]);
for($i=0;$i<count($file);$i++){
  $file[$i] = trim($file[$i]);
}
$fp = fopen($argv[2],'w');
fwrite($fp,implode("\n",$file));
fclose($fp);
?>
Ausführbar machen mit chmod +x und als erstes Argument den vollständigen Pfad zum File angeben
Code:
/path/to/file.php -f /path/to/file.txt
Ob -f oder -jederandereBuchstabe ist egal.
 

sowosamma

Benutzer
Mitglied seit
16. Jun 2009
Beiträge
565
Punkte für Reaktionen
0
Punkte
42
wow, vielen Dank für die vielen Antworten. Eigentlich war der Beitrag für mich ab itari's post #5 erledigt.

Klar könnte man zwei Zeilen schnell in vi schreiben, aber aus den zwei Zeilen soll ja noch mehr werden.
dos2unix nütze ich in der Arbeit, aber nur weil ich Dateien aus UNIX bekomme und in DOS brauche, um sie mit VBA zu verarbeiten. Zu Hause fände ich es umständlich erst schreiben und dann umwandeln. Da lad ich mir lieber den notepad++ runter und gut ist's

/Andi
 
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