Je comprends que je dois utiliser une gamme d'arguments, mais je n'ai aucune expérience. J'utilise Emacs pour mes scripts shell.
C'est ce que j'ai jusqu'à présent:
3 Réponses :
juste boucle sur les arguments avec un pour code>
Utilisation des références de variable * code> et non cotées (comme
$ f code>) entraînera des problèmes avec des noms de fichiers contenant des espaces blancheurs et / ou des caractères génériques (qui sont tous deux parfaitement légaux dans les noms de fichiers UNIX). Utilisez
"$ @" code> et
"$ f" code> à la place.
Je ne comprends pas pourquoi vous voulez utiliser $ @ (chaque paramètre), mais je résoudrais votre problème comme suit: Recherchez tous les fichiers (y compris des fichiers binaires), filtre Shell Scripts avec Grep et prenez uniquement le nom du fichier avec SED: P> if [ -x $i ]; then
#do something
fi
Merci! Nous utilisons Emacs parce que mon professeur a littéralement aidé le code LOL.
Je t'en prie. Il devrait être possible de supprimer "SED" et d'utiliser l'option "-L" de "grep", mais je ne peux pas le faire fonctionner. Si le code ne fonctionne pas, vérifiez la sortie de "Rechercher" sans Grep et SED et modifier le modèle Grep "Script" en conséquence. Bonne chance!
Selon la description, il est censé vérifier les fichiers passés sous forme d'arguments, pas la recherche du répertoire actuel (et de ses sous-répertoires). De plus, vous utilisez un tas de techniques qui échouent sur des fichiers avec des espaces et / ou des caractères génériques dans les noms. Voir Bashfaq # 20 pour des moyens plus robustes de le faire (si, en effet, c'est ce qui a besoin de faire ).
@Gordondavisson J'ai interprété la question différemment. Cependant, vous êtes correct sur le bogue. J'aurais dû joindre la variable $ i avec des guillemets doubles.
réponse parce que je ne peux pas encore commenter: p>
"$ @" code> et
"$ {nom [@]}" code> doit toujours utiliser avec des citations doubles environnantes. Sinon, les mots avec des espaces sont cassés. Voir "Man Bash" pour plus de détails. P>
Rechercher Code> destiné à rechercher le contenu des répertoires (sous-répertoires et sous-billets et substituts, etc.). Voulez-vous vraiment faire cela ou simplement vérifier les fichiers passés comme des arguments?