kippix
1
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 :
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 :
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
fran.b
2
Comme au début #!/bin/bash au lieu de /bin/sh, Ubuntu utilise dash.
kippix
3
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
kippix
4
Donc je vois pas le rapport avec dash… du coup 
fran.b
5
ben moi non plus du coup, vérifies les variables d’environnement. Qu’y a-t-il à la ligne 22?
ripat
6
La piste de fran.be est la bonne.
Que donne:
ls -l /bin/bash
kippix
7
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 
kippix
9
Le début de mon scripts c’est :
#!/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 
fran.b
10
Là ça m’étonnerait que ça soit la ligne 22 (j’en compte
. Tu peux mettre les lignes 1 à 22 du script?
kippix
11
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 ! 
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 }
fran.b
13
moi j’aurais plutôt dit d’essayer sans le function:
Checkexec () {
if [ $? != 0 ]; then
echo ""
echo ""
echo "[ $TIME ] - ERROR : $1"
ERR=1
fi
}
BBT1
14
essaie sans les parenthèses
kippix
15
Ok je vais me résigner à modifier la syntaxe 
Merci à tous
BBT1
16
Le man sur les fonctions en bash
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.