mon programme est conçu pour prendre les premiers parameters en tant qu’extension, puis le rest des parameters en tant que fichiers à rechercher et, s’ils sont trouvés, modifiés par l’extension. S’il n’est pas trouvé, il imprime une erreur.
Tout va bien jusqu’à ce que: ./chExt.sh ‘com’ ‘king cobra.dat’
où $ file divise les deux mots en ‘king’ et ‘cobra.dat’ puis les exécute séparément. J’en ai besoin pour lire en entier ‘king cobra.dat’ dans le fichier $.
J’ai entendu quelque chose à propos de l’utilisation de «shift» pour le faire lire dans son ensemble, mais je ne sais pas trop comment l’implémenter.
#!/bin/csh \ set ext="$1" shift echo the remaining are $* foreach file ($*) echo $file if (-r "$file") then set newName=`echo "$file" | sed 's/\.[A-Za-z0-9]*$/'".$ext"'/g'` echo $newName if ( "$file" == "$newName" ) then : else mv "$file" "$newName" endif end else echo "$file": No such file end endif
Merci!
Csh a des modificateurs de variables uniques, voir le modificateur grymoire csh var: q (quote)
Pour vous, vous pouvez faire
foreach file ($*:q) echo $file:q if (-r $file:q) then set newName=`echo $file:q | sed 's/\.[A-Za-z0-9]*$/'".$ext"'/g'` echo $newName:q .....
Malheureusement, je n’ai pas de csh pour tester ceci, vous pouvez trouver que remettre certaines des variables citées par dbl est requirejs, ou du moins réalisable.
J’espère que ça aide.