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 24/07/2007, 00h43   #1
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Par défaut Problème sur un IF condition1 && condition2

Bonjour,

J'ai encore un petit problème :

Code bash :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#Création du USER Name avec vérifications
function user_name()
{
	USER=""
	while [ -z ${USER} ] ; do
		#Demande à l'administrateur d'entrer un Nom et Prénom
		read -p "Entrez un Nom : " NOM
		read -p "Entrez un Prénom : " PRENOM
		user_short "${NOM}" "${PRENOM}"
		#test si tout les champs ont été remplis
		if [ -z "${USER}" ] ; then
			echo "ATTENTION : Aucun Nom et Prénom renseignés"
			echo "Veillez enregistrer TOUS les champs"
		fi
		#test si user n'est pas déjà présent dans le système
		if [ -w "${USER}" ] && grep -q "${USER}" /etc/passwd ; then
			echo "ATTENTION : Utilisateur déjà présent dans le système"
			echo "Veillez enregistrer un autre utilisateur"
			USER=""
		fi
	done
}

Mon problème se situe à ce niveau :

Code bash :
1
2
3
4
5
if [ -w "${USER}" ] && grep -q ${USER} /etc/passwd ; then
			echo "ATTENTION : Utilisateur déjà présent dans le système"
			echo "Veillez enregistrer un autre utilisateur"
			USER=""
		fi

le problème est avec [ -w "${USER}" ], je n'arrive pas rendre ce test valide même quand ${USER} est non vide avec mon grep...
Au final, la condition n'est même pas effectuée car une des conditions ne fonctionnes pas.

Comment je peux faire ?
__________________
www.SonolightDj.com
Prestataire sonorisation et lumière
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 12h13   #2
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Citation:
Envoyé par arnaudperfect
le problème est avec [ -w "${USER}" ], je n'arrive pas rendre ce test valide même quand ${USER} est non vide avec mon grep...
Au final, la condition n'est même pas effectuée car une des conditions ne fonctionnes pas.

Comment je peux faire ?
Je pense que la solution est de remplacer -w par -n ( signifie Not null )
-w est utilisé pour tester si un fichier est en accès Write, ce qui ne correspond pas à ta question.

if [ -n "${USER}" ] && grep -q ${USER} /etc/passwd ; then
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 13h55   #3
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 945
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 945
Points : 1 083
Points : 1 083
Petite remarque : s'il existe un utilisateur "toto", on ne peut pas choisir le nom "to" ? Fais attention à ton grep.

Code :
if grep -q "^${USER}:" /etc/passwd ; then
Ce serait pas mieux de faire ça ? (si j'ai bien compris, tu essaies de matcher que dans la première colonne de passwd, n'est-ce pas ?)
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 15h13   #4
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
oui bien vu LLB ! Je vais modifier mon GREP, ca évitera les erreurs...

MErci aussi BlaireauOne pour ta remarque
__________________
www.SonolightDj.com
Prestataire sonorisation et lumière
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h34.


 
 
 
 
Partenaires

Hébergement Web