Bonjour,
oui, si �a me piquait les yeux c'est surtout parce que c'�tait difficile
� lire (majuscules, pas d'espace, signes cabalistiques toussa toussa)
:), apr�s ce sont des go�ts personnels qui peuvent tr�s bien ne pas �tre
les plus judicieux:
* je trouve les tests
"[ expr1 ] && [ expr2]"
moins �l�gants que
"[ expr1 -a expr2 ]"
* les incr�mentations
"i=$(($i+1))"
sont facilement rempla�ables par des
"let i++" ou "let 'i += 1'"
* je pr�f�re les boucles
"for (( i = 0; ; i++ )); do ... [ ! -e ${CHEMIN[$i} ] && break; done" aux
"i=0; while [ -e ${CHEMIN[$i]} ]; do ... i=$(($i+1)); done",
bien que c'est vrai que dans ce cas for ne peut pas �valuer de test non
arithm�tique ni faire appel � une fonction, d'o� le "[ ! test ] &&
break", mais d'un autre c�t� initialisation et incr�mentation sont fait
par une m�me instruction.
* enfin puisqu'on est dans un fichier et qu'on est pas � quelques octets
pr�s:
"cp -p"
peut aussi s'�crire
"cp --preserve=mode,ownership,timestamps"
de mettre les version longues des options permet de mieux voir ce qui
est fait, et si tu mets la commande longue dans une variable �a �claire
encore mieux.
voil� c'est tout :)
et aussi merci car j'avais jamais fait attention que l'indexation de
tableau pouvait se faire sans passer par les substitutions.
Cordialement.
seb
Le 13/07/2012 15:09, Hugues MORIN a �crit :
> 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/
> Le 13 juillet 2012 08:13, S�bastien MARQUE<
seb.m...@free.fr> 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<
debian-user-f...@lists.debian.org>
>> Archive:
http://lists.debian.org/**4FFFBC6F...@free.fr<
http://lists.debian.org/4FFFBC6F...@free.fr>
vers
debian-user-f...@lists.debian.org
Archive:
http://lists.debian.org/5003B635...@free.fr