Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/09/2011, 19h25   #1
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 291
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 291
Points : 28
Points : 28
Par défaut Formulaire en shell

bonjour
j'aimerais créer un formulaire pour comparer le contenu d'un fichier dans des répertoires différentes.
le repertoire source par défault est /home/webdu/ et le rep destinataire est /home/webdutemp/
.J'aimerais eviter de saisir à chaque fois le nom du rep source et destinataire .j'ai fait le code comme ceci mais ca ne semble pas marcher .
bon c'est la 1er fois que je créer un formulaire en bash .
çà ne semble pas trop marche .avez vous une piste pour aider un débutant .
merci
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
#!/bin/sh
rep_s=/home/webdu/
rep_d=/home/webdutemp/
fich=general.php
read  -p "rep s :=>$rep_s : " rep_s1
read  -p "rep d :=>$rep_d : " rep_d1
read  -p "fich compa :=>$fich : " fich1
if [ $rep_s != "$rep_s1" && "$rep_s1"!="" ]
then rep_s=$rep_s1
fi
if [ $rep_d != "$rep_d1" && "$rep_d1"!=""]
then rep_d=$rep_d1 
fi
if [ "${fich}" != "${fich1}" && "${fich1}" !=""]
then fich=${fich1}
fi
diff ${rep_s}${fich} ${rep_d}${fich} >res_diff.txt
cat res_diff.txt
bigs3232 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/09/2011, 10h41   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
Bonjour,

dans les tests, qui utilisent la commande test ou les crochets simples, toujours mettre les variables entre guillemets.
&& et || n'existent pas pour test et pour [; il faut utiliser -a et -o.
il faut un espace après [ et un espace avant ] (au moins un)
les accolades ne sont nécessaires que lorsque une variable est juxtaposée à du texte :
Code :
1
2
var="insat"
echo "${var}iable"
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 19h44   #3
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 291
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 291
Points : 28
Points : 28
merci n_bah.explication limpide.je teste.
bigs3232 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 08h17   #4
Expert Confirmé Sénior
 
Avatar de Sve@r
 
Homme Frédéric
Ingénieur développement logiciels
Inscription : février 2006
Messages : 3 055
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Âge : 44
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 3 055
Points : 4 934
Points : 4 934
Salut

Je rajoute que test "$var" != "" peut se simplifier en test -n "$var"
Idem pour test "$var" = "" qui peut se simplifier en test -z "$var"

Et la structure
Code bash :
1
2
3
4
if test ...
then
    var=...
fi

peut se simplifier en
Code bash :
test ... && var=...
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit.
Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant.
Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation.
Dr. Adrian Rogers, 1931
Sve@r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h59.


 
 
 
 
Partenaires

Hébergement Web