2017-10-18 4 views
0

J'ai le dossier "destination /" et dans le dossier de destination, il contient l'exécutable grade1. Mon répertoire courant est « destination/»Comment puis-je exécuter un exécutable dans un script shell?

Je suis en train de courir

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

qui il dit garder

./grade1 no such file or directory 

partie étrange est que, quand je viens de copier le code pour commander en ligne et exécutez-le, ça fonctionne bien. Problème ne se pose quand je le fais dans le script shell

+1

Comment le script est-il exécuté? En particulier, quel répertoire de travail est le script en cours d'exécution? –

+1

Essayez de mentionner le chemin complet dans le script comme 'for i in/path/to/FICHIERS/*; do/chemin/vers/grade1 $ i; done' – mathB

+0

Vous pouvez appeler la commande 'pwd' à l'intérieur de votre boucle foreach pour savoir où vous êtes. –

Répondre

0

Une façon simple de résoudre ce problème pourrait être de commencer à utiliser le chemin complet du fichier exécutable grade1

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

Je ne pense pas que grade1 vraiment est dans votre répertoire de travail actuel, comme vous le prétendez. Je vous suggère de vérifier cela aussi vérifier les autorisations de votre exécutable. Étendez votre code à

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

Cela devrait révéler la source de votre problème.