Bonjour

J'ai trouve l'erreur, a la place d'ecrire:
cp -b -p --suffix=.bak
/home/user/public_html/alpha/www/includes/languages/english/password_forgotten.php
/home/user/public_html/beta/www/includes/languages/english

Suite a une erreur "d'encodage", il ecrivait:
cp -b -p --suffix=.bak /home/
user /public_html/alpha/www/includes/languages/english/password_forgotten.php
/home/user/public_html/beta/www/includes/languages/english

A priori, pour un tableau, il n'est pas necessaire de mettre le $
dans  '${DEV_VER[k]}' .
Sa fonctionne sans. o_O
Mais je ne sais si sa fonctionne juste par hasard ou si c'est le
comportement normal.

Question subsidiaire:
Sebastien, c'est juste parce qu'il est "visuellement" tres charge que ca
pique les yeux :D ou alors parce qu'il est trop lourd ou trop archaique?
Comme je l'ai marque en objet, c'est mon 1er script don je suppose qu'il y
a des trucs a ameliorer mais quoi?


Cordialement
Hugues

PS: le code du script (nettoye des commentaires) qui fonctionne:

#!/bin/bash
# Copy alpha version language file to beta and production
# only 1 argument: alpha version language file must be copy
# TUTO: http://doc.ubuntu-fr.org/tutoriel/script_shell

echo "Treatment..."

BASE_FOLDER=/home/user/public_html/
LANG_FOLDER=/includes/languages/
DEV_VER=("alpha" "beta" "production")
LANGUE=("english" "espanol" "french" "italian")
SITE=("www" "www2")
i=0
cpt=1

while [ -d $BASE_FOLDER${DEV_VER[0]}/${SITE[i]} ] && [ $i -lt ${#SITE[*]} ]
do
j=0
while [ -f $BASE_FOLDER${DEV_VER[0]}/${SITE[i]}$LANG_FOLDER${LANGUE[j]}/$1
] && [ $j -lt ${#LANGUE[*]} ]
do
k=1
while [ -d $BASE_FOLDER${DEV_VER[k]}/${SITE[i]}$LANG_FOLDER${LANGUE[j]} ]
&& [ $k -lt ${#DEV_VER[*]} ]
do
echo "copy from "${DEV_VER[0]}/${SITE[i]}"..."${LANGUE[j]}/$1" to
"${DEV_VER[k]}/${SITE[i]}...${LANGUE[j]}
cp -b -p --suffix=.bak
$BASE_FOLDER${DEV_VER[0]}/${SITE[i]}$LANG_FOLDER${LANGUE[j]}/$1
$BASE_FOLDER${DEV_VER[k]}/${SITE[i]}$LANG_FOLDER${LANGUE[j]}
k=$(($k+1))
done
j=$(($j+1))
done
i=$(($i+1))
done

exit 0


Le 13 juillet 2012 08:13, Sébastien MARQUE <[email protected]> a écrit :

> Bonjour,
>
> tout l'info est dans le message d'erreur: "opérande du fichier cible
> manquant", il manque la destination.
>
> La raison est simple: entre les larmes qui me brouillent la vue en voyant
> ton algo ;), j'ai pu discerner des choses du genre '${DEV_VER[k]}', ce qui
> ne va pas renvoyer grand chose dans ton cas.
>
> En bash on "expand" les variables. La lettre 'k' a donc pour valeur 'k',
> et $k (ou ${k}) a pour valeur le contenu de la variable k.
>
> ${DEV_VER[$k]} ou ${DEV_VER[${k}]} donneront un résultat plus conforme à
> ce que tu attends.
>
> Cordialement.
> seb
>
> Le 12/07/2012 18:52, Hugues MORIN a écrit :
>
>  Bonjour
>>
>> Voila je fais mes premiers pas dans le script shell.
>> Pour m'entrainer j'ai fait un script qui est sense copier des fichiers
>> vers
>> d'autres emplacements en leur gardant les memes proprietaires et droits,
>> ainsi que creer une copie de sauvegarde du fichier cible.
>>
>> Si ce n'ai que pour moi c'est une nouvelle syntaxe, il n'y a pas de grande
>> difficulte.
>> Neanmoins, j'ai l'erreur suivante a chaque "cp" executes:
>>
>> cp: opérande du fichier cible manquant apres
>> `/home/..../password_**forgotten.php'
>> Pour en savoir davantage, faites: " cp --help ".
>>
>> J'ai biensur cherche dans le man et sur mon ami google, mais j'ai rien
>> trouve qui resolve mon probleme.
>> Si je passe le "cp" manuellement en ligne de commande, cela fonctionne O_o
>>
>> Voici le script:
>>
>> #!/bin/bash
>> # Copy alpha version language file to beta and production
>> # only 1 argument: alpha version language file must be copy
>> # TUTO: 
>> http://doc.ubuntu-fr.org/**tutoriel/script_shell<http://doc.ubuntu-fr.org/tutoriel/script_shell>
>>
>> echo "Treatment..."
>>
>> BASE_FOLDER=/home/user/public_**html/
>> LANG_FOLDER=/includes/**languages/
>> DEV_VER=("alpha" "beta" "production")
>> LANGUE=("english" "espanol" "french" "italian")
>> SITE=("www" "www2")
>> i=0
>> cpt=1
>>
>> while [ -d $BASE_FOLDER${DEV_VER[0]}/${**SITE[i]} ]&&  [ $i -lt
>> ${#SITE[*]} ]
>> do
>> #echo "test 1 ok - "$i" - "${DEV_VER[0]}/${SITE[i]}
>> j=0
>> while [ -f $BASE_FOLDER${DEV_VER[0]}/${**SITE[i]}$LANG_FOLDER${LANGUE[**
>> j]}/$1
>> ]&&  [ $j -lt ${#LANGUE[*]} ]
>> do
>> #echo "test 2 ok - "$j" -
>> "${DEV_VER[0]}/${SITE[i]}$**LANG_FOLDER${LANGUE[j]}/$1
>> k=1
>> while [ -d $BASE_FOLDER${DEV_VER[k]}/${**SITE[i]}$LANG_FOLDER${LANGUE[**j]}
>> ]
>> &&  [ $k -lt ${#DEV_VER[*]} ]
>> do
>> #echo "test 3 ok - "$k" - "${DEV_VER[k]}/${SITE[i]}$**
>> LANG_FOLDER${LANGUE[j]}
>> #echo $cpt" - cp -b -p --suffix=.bak
>> $BASE_FOLDER${DEV_VER[0]}/${**SITE[i]}$LANG_FOLDER${LANGUE[**j]}/$1
>> $BASE_FOLDER${DEV_VER[k]}/${**SITE[i]}$LANG_FOLDER${LANGUE[**j]}"
>> echo "copy from "${DEV_VER[0]}/${SITE[i]}"..."**${LANGUE[j]}/$1" to
>> "${DEV_VER[k]}/${SITE[i]}...${**LANGUE[j]}
>> cp -b -p --suffix=.bak
>> $BASE_FOLDER${DEV_VER[0]}/${**SITE[i]}$LANG_FOLDER${LANGUE[**j]}/$1
>> $BASE_FOLDER${DEV_VER[k]}/${**SITE[i]}$LANG_FOLDER${LANGUE[**j]}
>> k=$(($k+1))
>> cpt=$(($cpt+1))
>> done
>> j=$(($j+1))
>> done
>> i=$(($i+1))
>> done
>>
>> exit 0
>>
>>
>> Cordialement
>> Hugues
>>
>>
> --
> Lisez la FAQ de la liste avant de poser une question :
> http://wiki.debian.org/fr/**FrenchLists<http://wiki.debian.org/fr/FrenchLists>
>
> Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
> vers 
> debian-user-french-REQUEST@**lists.debian.org<[email protected]>
> En cas de soucis, contactez EN ANGLAIS [email protected]
> Archive: 
> http://lists.debian.org/**[email protected]<http://lists.debian.org/[email protected]>
>
>

Répondre à