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
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
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
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
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
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
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 qu i
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 gran de
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.ubun tu-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/FrenchL ists>
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@**lists.debian.org<debian-user-french-REQ
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/**<http://lists. debian.org/
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 qu i
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 gran de
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.ubun tu-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/FrenchL ists>
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@**lists.debian.org<debian-user-french-REQ UEST@lists.debian.org>
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/**4FFFBC6F.9040600@free.fr<http://lists. debian.org/4FFFBC6F.9040600@free.fr>
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 qu i
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 gran de
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.ubun tu-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/FrenchL ists>
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@**lists.debian.org<debian-user-french-REQ
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/**<http://lists. debian.org/
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 ve rs
d'autres emplacements en leur gardant les memes proprietaires et droits,
ainsi que creer une copie de sauvegarde du fichier cible.
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 ve rs
d'autres emplacements en leur gardant les memes proprietaires et droits,
ainsi que creer une copie de sauvegarde du fichier cible.
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 ve rs
d'autres emplacements en leur gardant les memes proprietaires et droits,
ainsi que creer une copie de sauvegarde du fichier cible.
On Thu, 12 Jul 2012 18:52:26 +0200
Hugues MORIN wrote:
> 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.
Un conseil pour déboguer un script shell: Mettre le temps du déboguag e les
options v et x
dans la première ligne, cad #!/bin/bash -vx
Note aussi que le shell posix /bin/sh est différent du bash.
Cordialement
--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mine, sont seulement les miennes} ***
On Thu, 12 Jul 2012 18:52:26 +0200
Hugues MORIN <morinh@gmail.com> wrote:
> 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.
Un conseil pour déboguer un script shell: Mettre le temps du déboguag e les
options v et x
dans la première ligne, cad #!/bin/bash -vx
Note aussi que le shell posix /bin/sh est différent du bash.
Cordialement
--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mine, sont seulement les miennes} ***
On Thu, 12 Jul 2012 18:52:26 +0200
Hugues MORIN wrote:
> 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.
Un conseil pour déboguer un script shell: Mettre le temps du déboguag e les
options v et x
dans la première ligne, cad #!/bin/bash -vx
Note aussi que le shell posix /bin/sh est différent du bash.
Cordialement
--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mine, sont seulement les miennes} ***
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 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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/**<http://lists.debian.org/
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<seb.marque@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-french-REQUEST@lists.debian.org>
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/**4FFFBC6F.9040600@free.fr<http://lists.debian.org/4FFFBC6F.9040600@free.fr>
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 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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/**<http://lists.debian.org/
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 ]"
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 ]"
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 ]"