#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 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( 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)
@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)
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 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( 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