débutant : utilisation du for

salut,
bon , c’est la fête, j’écris mon premier script shell!
Jai du mal a comprendre la syntaxe du for:
j’essaye de faire ceci:

ou $1 est un chemin vers une rep passé en parametre a une fonction
je voudrais que j prenne tous les noms des fichiers contenus dans ce dossier.
Comment faire?

[code]for i in ls "$1"/* do

ton traitement[/code]

la variable locale $i prendras tour à tour la valeur de chaque éléments de la liste

Là tu reconnais une commande classique (ls), elle est entre ` pour être exécuté avant le for et donc être remplacé par la liste des fichiers.

Tu va avoir des problèmes pour les fichiers qui contiennent des espaces. Pour le résoudre il faut modifier la variable $IFS si je ne me trompe pas. Cette variable définie les caractères séparateur d’une liste. Cherche sur internet pour plus d’information, je ne veux pas dire de bêtises et être ensuite indexé par google.

ls "$1"/* peut aussi s’écrire $(ls “$1”/*) si je me souviens bien.

En effet avec l’avantage pour le $() qu’il est possible d’en imbriquer plusieurs.

A noter que ce genre d’ “eval” est à utiliser trés prudemment dans un script destiné à être utilisé avec des droits root (en suid ou avec une autorisation sudo) quand une partie de ce qui est évalué vient comme paramètre de ce script, parcequ’une petite erreur de conception, et un malicieux bonhomme peut injecter son code à lui dans l’évaluation et executer des choses avec les droits de lancement du script.

Les scripts shell c’est pas recommandé pour des usages où la sécurité au sein de la machine est importante.

Une règle simple consiste à utiliser les argument uniquement entre parenthèse.

oef, dans mon cas, la sécurité n’est pas très importante :stuck_out_tongue:
le script ne serait pas exécuté en root.
En fait, ce que je n’avais pas compris c’est que le shell
a besoin du caractère / pour ne pas qu’il considère * comme
le caractère ‘*’ mais bien comme un joker.
Merci en tout cas, je vais continuer cela.