Contenu | Rechercher | Menus

Annonce

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.

À propos de l'équipe du forum.

#1 Le 04/10/2017, à 08:51

remi82

[Résolu] Tester si une variable est vide (chaine)

Bonjour,

Je cherche à savoir si une variable est vide ou non. Il s'agit d'une chaine.
J'ai trouvé des réponses sur le net, mais rien ne fonctionne chez moi.

if [ ${VAR} ]; then ...
if [[ -z "$var" ]]
[ $(grep motif <<<$var) ] && echo ok
var0='chainedecar'
var1=$(echo $var0 | grep motif)
if [ $var1 != '' ]; then
  echo 'ok'
fi

Merci pour votre aide

Dernière modification par remi82 (Le 06/10/2017, à 15:21)

Hors ligne

#2 Le 04/10/2017, à 09:18

pingouinux

Re : [Résolu] Tester si une variable est vide (chaine)

Bonjour,
Ce qui devrait marcher :

if [ "${VAR}" ]; then ...
if [ -z "${VAR}" ]; then ...
if [[ "${VAR}" ]]; then ...
if [[ -z "${VAR}" ]]; then ...
if -q grep motif <<<"$var"; then ...

Hors ligne

#3 Le 04/10/2017, à 09:42

remi82

Re : [Résolu] Tester si une variable est vide (chaine)

Bonjour pingouinux,

Merci pour ton retour, mais aucune de ces syntaxe ne fonctionne chez moi.

Syntax error: "done" unexpected (expecting "fi")

J'ai pourtant bien indiqué "fi" à la fin.

Hors ligne

#4 Le 04/10/2017, à 10:09

pingouinux

Re : [Résolu] Tester si une variable est vide (chaine)

Dans ce cas, fais un copier-coller des commandes et de leur retour, car je ne suis pas devin…

Hors ligne

#5 Le 04/10/2017, à 10:30

remi82

Re : [Résolu] Tester si une variable est vide (chaine)

Re,

if [ "${VAR}" ]; then echo ko
if [ -z "${VAR}" ]; then echo ok

En retour :
Syntax error: "done" unexpected (expecting "fi")

Merci par avance.

Hors ligne

#6 Le 04/10/2017, à 10:47

pingouinux

Re : [Résolu] Tester si une variable est vide (chaine)

Merci d'utiliser les balises-code pour lister tes commandes (comme tu as fait en #1).

Si tu ne montres qu'une partie des commandes, on ne peut rien dire. Peut-être as-tu mis un done à la place d'un fi. Il faut montrer la structure complète, depuis le premier if, jusqu'au dernier fi.

Hors ligne

#7 Le 04/10/2017, à 10:57

ar barzh paour

Re : [Résolu] Tester si une variable est vide (chaine)

@pingouinux : je n'ai pas le même résultat suivant que VAR est initialié ou non

jpb@jpb-desktop:~$ unset VAR
jpb@jpb-desktop:~$ if [ "${VAR}" ]; then echo "ko"; fi
jpb@jpb-desktop:~$ VAR="E"
jpb@jpb-desktop:~$ if [ "${VAR}" ]; then echo "ko"; fi
ko
jpb@jpb-desktop:~$

et avec -z

jpb@jpb-desktop:~$ unset VAR
jpb@jpb-desktop:~$ if [ -z "${VAR}" ]; then echo "ko"; fi
ko
jpb@jpb-desktop:~$ VAR="E"
jpb@jpb-desktop:~$ if [ -z "${VAR}" ]; then echo "ko"; fi
jpb@jpb-desktop:~$

PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#8 Le 04/10/2017, à 11:16

pingouinux

Re : [Résolu] Tester si une variable est vide (chaine)

ar barzh paour #7 a écrit :

@pingouinux : je n'ai pas le même résultat suivant que VAR est initialié ou non

Les résultats que tu obtiens sont corrects. Qu'est-ce qui te paraît bizarre ?

Tu peux éventuellement faire ceci :

if [ "${VAR}" ]; then echo "VAR initialisée"; else echo "VAR pas initialisée; fi
if [ -z "${VAR}" ]; then echo "VAR pas initialisée"; else echo "VAR initialisée; fi

Hors ligne

#9 Le 04/10/2017, à 14:19

Watael

Re : [Résolu] Tester si une variable est vide (chaine)

salut,

J'ai trouvé des réponses sur le net

t'as pas dû chercher bien loin !

voir :

help test

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#10 Le 06/10/2017, à 15:20

remi82

Re : [Résolu] Tester si une variable est vide (chaine)

Bonjour,

Désolé pour ma réponse tardive.

if [ "${VAR}" ]; then ...

fonctionne très bien. Je ne sais pas ce que j'ai fais la première fois.
Merci à vous.

Rémi

Hors ligne

#11 Le 12/10/2017, à 10:17

ar barzh paour

Re : [Résolu] Tester si une variable est vide (chaine)

pingouinux a écrit :

Les résultats que tu obtiens sont corrects. Qu'est-ce qui te paraît bizarre ?

rien
je voulais simplement signaler que le résultat de

if [ "${VAR}" ]; then xxx ;fi

ne renvoie pas la même chose suivant que VAR a été initialisée ou non

Dernière modification par ar barzh paour (Le 21/10/2017, à 13:46)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne