Vi, tu as raison. Si tu appelles
./prog "le repertoire1" "~moldave" ben il transformera pas "~moldave" en "/home/moldave"
C'est normal, les règles du shell disent que les guillemets double inhibent tout sauf le $, le backquottes, le guillemet double et le backslash s'il précède un des 3 caractère cités. Cela signifie que, si l'utilisateur qui connait le shell appelle "~moldave" c'est qu'il ne veut pas que le tilde soit étendu. Donc faut pas que ton script interprète ce tilde là où l'utilisateur ne le veut pas.
Faut pas essayer de faire un script qui réfléchisse à la place de l'utilisateur, c'est pas bon. 1) tu te feras vraiment chier et 2) tu risques de faire des erreurs ou d'oublier des trucs ou de faire chier l'utilisateur qui appellera ton script
Conclusion, vaut mieux que tu fasses un script tout simple qui cherche juste le "/" en début des noms. Si l'utilisateur veut lui passer un nom avec espace, il met des guillemets (ou un backslash devant l'espace). Si l'utilisateur lui passe ~moldave le shell transforme cet argument et ton script fonctionne toujours, et si l'utilisateur passe "~moldave" ben tu considères que l'utilisateur a fait son choix par rapport à tes règles (qui correspondent à celles du shell) et tu te fais pas chier à tenter de le corriger (peut-être qu'il ne veut pas).
C'était mon conseil. mais en effet, tu as raison. "~moldave" reste tel quel. Pour le shell, ce n'est plus un nom de répertoire, c'est juste un texte.
Poste le Monday 28 March 2005 17:39:30