# Problème de syntaxe sur mes functions

**URL:** <https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 7:13 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790 "2016-02-20T19:13:17Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![kippix](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/d2c977/32.png) [@kippix](https://www.debian-fr.org/u/kippix)\
**Post date:** [Février 20, 2016, 7:13 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/1 "2016-02-20T19:13:17Z")

</div>

Bonjour,

Je viens vers vous car je pense avoir un problème de portabilité.

En effet, sur une debian j’ai coder un script en bash avec des fonctions. Par exemple :

```auto
     22 function Checkexec ()
     23 {
     24 if [$? != 0]; then
     25 echo ""
     26 echo ""
     27 echo "[$TIME] - ERROR : $1"
     28 ERR=1
     29 fi
     30 }

```

Sur ma debian l’exécution se fait sans problème.

Par contre quand je l’exécute sur une 😕 ubuntu 😕 j’ai l’erreur suivante :

```auto

```

Version de bash :  
Debian:

`dpkg -l | grep bash
ii bash 3.1dfsg-8 The GNU Bourne Again SHell`

Ubuntu

`ii bash 3.2-0ubuntu18 The GNU Bourne Again SHell
ii bash-completion 20060301-3ubuntu3 programmable completion for the bash shell`

Vous pensez que ce serai à cause de la version de bash? Je ne pense quand même pas car la version ubuntu est de plus, plus récente

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 20, 2016, 7:13 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/2 "2016-02-20T19:13:18Z")

</div>

Comme au début #!/bin/bash au lieu de /bin/sh, Ubuntu utilise dash.

---

<div class="post-metadata">

**Author:** ![kippix](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/d2c977/32.png) [@kippix](https://www.debian-fr.org/u/kippix)\
**Post date:** [Février 20, 2016, 7:13 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/3 "2016-02-20T19:13:19Z")

</div>

Oui mon shibang est bien #!/bin/bash

`ls -l /bin/bash
-rwxr-xr-x 1 root root 686K 2008-05-12 20:33 /bin/bash`

---

<div class="post-metadata">

**Author:** ![kippix](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/d2c977/32.png) [@kippix](https://www.debian-fr.org/u/kippix)\
**Post date:** [Février 20, 2016, 7:13 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/4 "2016-02-20T19:13:22Z")

</div>

Donc je vois pas le rapport avec dash… du coup ☹

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 20, 2016, 7:13 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/5 "2016-02-20T19:13:23Z")

</div>

ben moi non plus du coup, vérifies les variables d’environnement. Qu’y a-t-il à la ligne 22?

---

<div class="post-metadata">

**Author:** ![ripat](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/bc79bd/32.png) [@ripat](https://www.debian-fr.org/u/ripat)\
**Post date:** [Février 20, 2016, 7:13 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/6 "2016-02-20T19:13:24Z")

</div>

La piste de [fran.be](http://fran.be) est la bonne.

Que donne:  
ls -l /bin/bash

---

<div class="post-metadata">

**Author:** ![kippix](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/d2c977/32.png) [@kippix](https://www.debian-fr.org/u/kippix)\
**Post date:** [Février 20, 2016, 7:13 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/7 "2016-02-20T19:13:34Z")

</div>

> [@](#):
>
> ben moi non plus du coup, vérifies les variables d’environnement. Qu’y a-t-il à la ligne 22?

A la ligne 22 il y a le début de ma fonction que j’ai indiqué plus haut

[quote]Que donne:  
ls -l /bin/bash[/quote]

Le l’ai également indiquer plus haut 😉

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 20, 2016, 7:13 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/8 "2016-02-20T19:13:41Z")

</div>

et avant cette ligne?

---

<div class="post-metadata">

**Author:** ![kippix](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/d2c977/32.png) [@kippix](https://www.debian-fr.org/u/kippix)\
**Post date:** [Février 20, 2016, 7:20 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/9 "2016-02-20T19:20:41Z")

</div>

Le début de mon scripts c’est :

```auto
#!/bin/bash
##
#
######################################
## Functions ##
######################################

function Checkexec () <<--------- ligne 22
{
    if [$? != 0]; then
        echo ""
        echo ""
        echo "[$TIME] - ERROR : $1"
        ERR=1
    fi
}

```

En gros, je vois pas le problème ☹

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 20, 2016, 7:20 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/10 "2016-02-20T19:20:43Z")

</div>

Là ça m’étonnerait que ça soit la ligne 22 (j’en compte ![8)](https://www.debian-fr.org/uploads/default/original/1X/ae031e9834d19166598edd060b063d44f1829139.gif "Cool"). Tu peux mettre les lignes 1 à 22 du script?

---

<div class="post-metadata">

**Author:** ![kippix](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/d2c977/32.png) [@kippix](https://www.debian-fr.org/u/kippix)\
**Post date:** [Février 20, 2016, 7:21 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/11 "2016-02-20T19:21:29Z")

</div>

```auto
      1 #!/bin/bash
      2 ##
      3 #
      4 # But : Sauvegarder la configuration du systeme
      5 #
      6 # Auteur : kippix - 02/01/2009
      7 #
      8 ##
      9 #set -x
     10 ##
     11 
     12 ######################################
     13 ## Variables ##
     14 ######################################
     15 . `dirname $0`/../profile
     16 # Initialisation de mail.txt
     17 cat /dev/null > $LOG/mail.txt
     18 ######################################
     19 ## Functions ##
     20 ######################################
     21 
     22 function Checkexec ()
```

Convaincu ! 🙂

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 7:21 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/12 "2016-02-20T19:21:39Z")

</div>

Tente ça :

` 22 function Checkexec()
     23 {
     24 if [$? != 0]; then
     25 echo ""
     26 echo ""
     27 echo "[$TIME] - ERROR : $1"
     28 ERR=1
     29 fi
     30 }`

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 20, 2016, 7:21 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/13 "2016-02-20T19:21:41Z")

</div>

moi j’aurais plutôt dit d’essayer sans le function:

`Checkexec () {
     if [$? != 0]; then
         echo ""
         echo ""
         echo "[$TIME] - ERROR : $1"
         ERR=1
     fi
 }
`

---

<div class="post-metadata">

**Author:** ![BBT1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@BBT1](https://www.debian-fr.org/u/BBT1)\
**Post date:** [Février 20, 2016, 7:21 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/14 "2016-02-20T19:21:48Z")

</div>

essaie sans les parenthèses

---

<div class="post-metadata">

**Author:** ![kippix](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/d2c977/32.png) [@kippix](https://www.debian-fr.org/u/kippix)\
**Post date:** [Février 20, 2016, 7:22 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/15 "2016-02-20T19:22:10Z")

</div>

Ok je vais me résigner à modifier la syntaxe 😉

Merci à tous

---

<div class="post-metadata">

**Author:** ![BBT1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@BBT1](https://www.debian-fr.org/u/BBT1)\
**Post date:** [Février 20, 2016, 7:22 UTC](https://www.debian-fr.org/t/probleme-de-syntaxe-sur-mes-functions/18790/16 "2016-02-20T19:22:13Z")

</div>

[Le man sur les fonctions en bash](http://www.faqs.org/docs/bashman/bashref_22.html#SEC22)

Si tu veux garder tes parenthèses, tu peux aussi essayer de mettre un espace entre le nom de la fonction et ces parenthèses.
