2017-10-18 9 views
0

Ich habe Ordner "Ziel /" und im Zielordner, enthält es ausführbare Note1. Mein aktuelles Verzeichnis ist „Ziel /“Wie kann ich eine ausführbare Datei im Shell-Skript ausführen?

Ich versuche

for i in FILES/*; do ./grade1 $i done 

Was es halten zu laufen, sagt

./grade1 no such file or directory 

Sonderbare ist, dass, wenn ich kopieren Sie einfach die Codezeile zu befehlen und es laufen, es funktioniert gut. Problem entsteht erst, wenn ich es in Shell-Skript

+1

Wie wird das Skript ausgeführt? In welchem ​​Arbeitsverzeichnis wird das Skript ausgeführt? –

+1

Versuchen Sie, den vollständigen Pfad im Skript zu erwähnen, wie 'für i in/path/to/FILES/*; do/Pfad/zu/Note1 $ i; done' – mathB

+0

Sie können den Befehl 'pwd' in Ihrer foreach-Schleife aufrufen, um zu wissen, wo Sie sich befinden. –

Antwort

0

Einen einfachen Weg, um dieses Problem zu beheben, könnte mit vollständigem Pfad von grade1 ausführbarer Datei, um zu starten

for i in FILES/*; do {FULL_PATH}/grade1 $i done 
0

Ich glaube nicht, dass grade1 wirklich ist in Ihrem aktuellen Arbeitsverzeichnis, wie Sie behaupten. Ich schlage vor, dass Sie dies auch überprüfen, überprüfen Sie die Berechtigungen Ihrer ausführbaren Datei. Erweitern Sie Ihren Code auf

echo current directory is $PWD 
ls -l grade1 
for i in FILES/*; do ./grade1 $i done 

Dies sollte die Quelle Ihres Problems offen legen.

Verwandte Themen