Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

N'oubliez pas de cocher la case « Ajustement pour l'heure d'été » dans votre profil.

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 05/04/2018, à 20:48

selem5962

If Comparaison de variable [RESOLU]

Bonjour, j'ai besoin de votre savoir, je n'arrive pas à trouver la solution à cette petite problématique.

while read motpresent  
do
	if [ "$champ2" = "$motpresent" ]
	then
		verrou=1
	fi	
done < ./Tmp/fichier.txt

J'ai besoin de comparer deux variables dans un script bash.
Ces variables sont suseptibles de contenir des espaces, des caractère spéciaux (^ ? . ! :...).

Comment puis je faire pour comparer ces deux variables $champ2 et $motpresent ?
Pour le moment la lecture des variables me provoque l'erreur :

script.sh: ligne 4: images.jpg : commande introuvable

Merci d'avance.

Dernière modification par selem5962 (Le 06/04/2018, à 14:26)

Hors ligne

#2 Le 05/04/2018, à 21:03

pingouinux

Re : If Comparaison de variable [RESOLU]

Bonsoir,
Le message d'erreur ne correspond pas au script que tu montres (qui me paraît correct).

Hors ligne

#3 Le 05/04/2018, à 21:40

selem5962

Re : If Comparaison de variable [RESOLU]

Malheureusement pour moi sisi ça correspond bien.
Image.jpg correspond à une variable qui ne passe pas à cause du "."

Hors ligne

#4 Le 05/04/2018, à 21:52

Watael

Re : If Comparaison de variable [RESOLU]


eval, c'est mal.

En ligne

#5 Le 06/04/2018, à 06:57

pingouinux

Re : If Comparaison de variable [RESOLU]

Montre le contenu complet de script.sh. Je maintiens que ce message d'erreur

script.sh: ligne 4: images.jpg : commande introuvable

ne peut pas se référer à cette portion de script

while read motpresent  
do
	if [ "$champ2" = "$motpresent" ]
	then
		verrou=1
	fi	
done < ./Tmp/fichier.txt

Édité :
Montre aussi le contenu de ./Tmp/fichier.txt

Dernière modification par pingouinux (Le 06/04/2018, à 06:59)

Hors ligne

#6 Le 06/04/2018, à 07:51

bipede

Re : If Comparaison de variable [RESOLU]

pingouinux a écrit :

Montre le contenu complet de script.sh. Je maintiens que ce message d'erreur

script.sh: ligne 4: images.jpg : commande introuvable

ne peut pas se référer à cette portion de script

while read motpresent  
do
	if [ "$champ2" = "$motpresent" ]
	then
		verrou=1
	fi	
done < ./Tmp/fichier.txt

Édité :
Montre aussi le contenu de ./Tmp/fichier.txt

+1


Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Ubuntu 18.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 18.04 avec /home séparé.

Mon site: Les contributions du bipède

Hors ligne

#7 Le 06/04/2018, à 13:16

pingouinux

Re : If Comparaison de variable [RESOLU]

Prends l'habitude, quand tu utilises des variables, de les entourer de " " (par exemple : "$champ2").
La ligne 66 du script que tu montres en #7 peut causer une erreur, selon le contenu de $champ2, mais ce n'est pas la ligne 4 comme l'indique le message d'erreur.

                                        $champ2 >> ./Tmp/fichier_a_verrouiller.txt

Hors ligne

#8 Le 06/04/2018, à 13:40

Watael

Re : If Comparaison de variable [RESOLU]

touch : inutile
en-tête dans un fichier de données : inutile
grep + cut = awk (=> paste : inutile)
while read ligne : inutile -> mapfile
...

-> Guide Bash pour le Débutant !


eval, c'est mal.

En ligne

#9 Le 06/04/2018, à 13:52

selem5962

Re : If Comparaison de variable [RESOLU]

Watael a écrit :

touch : inutile
en-tête dans un fichier de données : inutile
grep + cut = awk (=> paste : inutile)
while read ligne : inutile -> mapfile
...

-> Guide Bash pour le Débutant !

Réponse inutile. Si j'ai envie d'utiliser touch je l'utilise, si j'ai envie de mettre un grep et cut et non un awk je le fais... Ce n'est pas l'objet de ma demande. Mais merci nous avons constaté que tu étais super fort avec plein de connaissances. Mais tu n'as pas résolu mon problème pour autant...

Merci pingouinux pour ta réponse. Je pense que le problème vient de la comparaison car si je commente ce IF le script s’exécute sans erreur. De plus la comparaison ne s'effectue pas car lors d'un résultat positif, la variable verrou ne passe pas à 1.

Merci d'avance pour votre aide.

Hors ligne

#10 Le 06/04/2018, à 14:10

Watael

Re : If Comparaison de variable [RESOLU]

si tu veux faire ça, il faut aller dans une petite pièce fermée avec un trou au milieu.


eval, c'est mal.

En ligne

#11 Le 06/04/2018, à 14:11

selem5962

Re : If Comparaison de variable [RESOLU]

Merci Watael pour ta réponse encore très utile.

Hors ligne

#12 Le 06/04/2018, à 14:26

selem5962

Re : If Comparaison de variable [RESOLU]

Il s'agissait d'un problème d'espace simplement dans une comparaison "X"="X" et "X" = "X".
Merci pour votre aide.

Hors ligne

#13 Le 06/04/2018, à 15:55

erresse

Re : If Comparaison de variable [RESOLU]

Ben, c'est super que ce soit résolu, parce-que apparemment, personne n'a compris le problème et personnellement je ne comprends pas la solution... roll

selem5962 a écrit :

Il s'agissait d'un problème d'espace simplement dans une comparaison "X"="X" et "X" = "X".

Que la comparaison soit '[ "X"="X" ]' ou '[ "X" = "X" ]', ça ne change absolument rien, le résultat est identique !


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

En ligne

#14 Le 06/04/2018, à 17:33

selem5962

Re : If Comparaison de variable [RESOLU]

Une chance alors que j'ai trouvé seul lol

Hors ligne

#15 Le 06/04/2018, à 17:35

pingouinux

Re : If Comparaison de variable [RESOLU]

@erresse :
En fait, il y avait cette ligne

                        if [ "$verrou"="0" ]

qui apparaissait à la ligne 64 du script présenté par selem5962 dans son message #7, message qu'il a supprimé depuis, histoire de rendre la chose encore plus confuse.

Hors ligne

#16 Le 06/04/2018, à 19:26

Watael

Re : If Comparaison de variable [RESOLU]

erreur de DÉBUTANT !

big_smile


eval, c'est mal.

En ligne

#17 Le 06/04/2018, à 19:44

selem5962

Re : If Comparaison de variable [RESOLU]

Oui totalement c'est pour ça que je demandais l'aide de PRO... mais même pour des pros rien à faire personne n'a trouvé lol

Hors ligne

#18 Le 06/04/2018, à 20:16

pingouinux

Re : If Comparaison de variable [RESOLU]

selem5962 #17 a écrit :

Oui totalement c'est pour ça que je demandais l'aide de PRO... mais même pour des pros rien à faire personne n'a trouvé lol

Avec les informations parcellaires et incohérentes que tu as données au début, on ne risquait pas de trouver…

Hors ligne