Obtenir pour ne pas séparer le fichier

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.