# Les conditions && en bash

**URL:** <https://www.debian-fr.org/t/les-conditions-en-bash/69692>\
**Category:** Programmation\
**Created:** [Mai 21, 2016, 2:16 UTC](https://www.debian-fr.org/t/les-conditions-en-bash/69692 "2016-05-21T14:16:15Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![iTux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/itux/32/4372_2.png) [@iTux](https://www.debian-fr.org/u/iTux)\
**Post date:** [Mai 21, 2016, 2:16 UTC](https://www.debian-fr.org/t/les-conditions-en-bash/69692/1 "2016-05-21T14:16:15Z")

</div>

bonjour, voici un petit script

> #!/bin/bash

> if [-n $1] && [$1 = «&nbsp;mdp&nbsp;»]  
> then  
> echo «&nbsp;tu m’as dit mdp !&nbsp;»  
> else  
> echo «&nbsp;dit moi le mot&nbsp;»  
> fi

lorsque je le lance sans argument j’obtiens une erreur

> 3: [: =: unexpected operator  
> dit moi le mot

Mais quand je lance avec l’argument mdp tout va bien! je ne comprends pas pourquoi?

---

<div class="post-metadata">

**Author:** ![limax](https://www.debian-fr.org/user_avatar/www.debian-fr.org/limax/32/3886_2.png) [@limax](https://www.debian-fr.org/u/limax)\
**Post date:** [Mai 21, 2016, 2:57 UTC](https://www.debian-fr.org/t/les-conditions-en-bash/69692/2 "2016-05-21T14:57:36Z")

</div>

Bonjour essaye

if [[-n $1 && $1 = “mdp”]]

---

<div class="post-metadata">

**Author:** ![iTux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/itux/32/4372_2.png) [@iTux](https://www.debian-fr.org/u/iTux)\
**Post date:** [Mai 21, 2016, 3:12 UTC](https://www.debian-fr.org/t/les-conditions-en-bash/69692/3 "2016-05-21T15:12:04Z")

</div>

une execution avec ou sans argument dans ce cas donne :

> test.sh: 2: test.sh: [[: not found  
> dit moi le mot

j’arrive a faire avancer le schmilblik en testant l’existante avec un -z puis en traitant de manière séparé en imbricant un deuxième if ou avec un case, par contre comme ca ca marche pas et je sais pas pourquoi 😕 .

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Mai 22, 2016, 11:55 UTC](https://www.debian-fr.org/t/les-conditions-en-bash/69692/4 "2016-05-22T11:55:40Z")

</div>

```auto
 #!/bin/bash

 if [-n "${1}"] && ["${1}" = "mdp"]
 then
     echo "tu m'as dit mdp !"
 else
     echo "dit moi le mot"
 fi

```

---

<div class="post-metadata">

**Author:** ![ed](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ed/32/5886_2.png) [@ed](https://www.debian-fr.org/u/ed)\
**Post date:** [Mai 23, 2016, 12:19 UTC](https://www.debian-fr.org/t/les-conditions-en-bash/69692/5 "2016-05-23T12:19:24Z")

</div>

En shell il faut toujours utiliser “”. Par exemple, pour être le plus portable possible:

```auto
if [x"bla" = "x"]; then echo "empty"; fi

```

---

<div class="post-metadata">

**Author:** ![iTux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/itux/32/4372_2.png) [@iTux](https://www.debian-fr.org/u/iTux)\
**Post date:** [Mai 23, 2016, 9:23 UTC](https://www.debian-fr.org/t/les-conditions-en-bash/69692/6 "2016-05-23T21:23:56Z")

</div>

Je vous remercie, ce que je ne comprends pas encore c’est le  
${}, c’est un équivalent de $1? je ne sais pas quoi chercher pour comprendre quand écrire sous cette forme.

---

<div class="post-metadata">

**Author:** ![limax](https://www.debian-fr.org/user_avatar/www.debian-fr.org/limax/32/3886_2.png) [@limax](https://www.debian-fr.org/u/limax)\
**Post date:** [Mai 24, 2016, 4:26 UTC](https://www.debian-fr.org/t/les-conditions-en-bash/69692/7 "2016-05-24T16:26:48Z")

</div>

Bonjour

J’aime bien [ce document pdf](https://docs.google.com/file/d/0B2Vr6oubXkCsM1cyQjZwR2diQlU/preview)
