Script BASH

Bonjour,

le script suivant ne fonctionne pas et me retourne l’érreur
bash: backup.sh : line 47 : “$@”: n’est pas un argument valide.
Je souhaiterai que ce script télécharge les 3 fichiers fournis en arguments
en les rennomants avec la date du jour et qu’il supprime les occurences les plus anciènnes de ces 3 fichiers afin de n’en conserver que 6 occurences de chacuns des 3 fichiers.

1 #!/bin/bash -v -x 2 3 set -v 4 set -x 5 6 cd $HOME 7 8 9 for "$@" in domestica webdemo app2intg # arguments passés à l'appel du script 10 11 do 12 13 wget http://192.168.1.7/CARRIBACKUPS/"$@"-today.tgz 14 15 16 RETVAL=$? 17 18 19 if [$RETVAL -ne 0]; then 20 21 exit 22 23 fi 24 25 26 today=`date +%d-%m-%Y` 27 28 mv "$@"-today.tgz /home/system/test/"$@"-${today}.tgz 29 30 nbtotal=`ls -lt /home/system/test/"$@"* | wc -l` 31 32 33 if [$nbtotal -gt 6]; then 34 35 nbtokeep=`ls -lt /home/system/test/"$@"* | head -n 6 | wc -l` 36 37 nbtodel=`expr $nbtotal - $nbtokeep` 38 39 40 cd $HOME/test 41 42 43 ls | tail -n $nbtodel | xargs rm -rf 44 45 fi 46 47 done

Si qqun peut me donner une piste ou sait d’ou vient le problème.
Merci beaucoup de votre aide .

[edit par ashgenesis]Merci d’utiliser les balises codes :slightly_smiling:[/edit]

Pourquoi tu prends $@ comme nom de variable?
Remplace par param.

#!/bin/bash for param in "$@" do echo $param done root@debian:/tmp# chmod +x w root@debian:/tmp# ./w a d e a d e
$@ est un caractère reservé, c’est sémantiquement incorrect de le mettre après for

Et qui plus est, aprés for ici, tu affectes (par énumération de la liste) une valeur à la variable, qui, dans une affectation, ne peut être entre guillemets j’imagine …