#1 Le 04/07/2007, à 06:53
- vo0do0
[résolue] Script Bash, problème de syntaxe...
Bonjour!
Je souhaite réaliser un paquet pour installer certains codecs vidéo propriétaire tel que real video, quicktime...
j'utilise un script shell (bash) et "checkinstall" pour réaliser se paquet.
mon script est le suivant :
# !/bin/bash
repertoire_nom_principal="/usr/lib/win32"
repertoire_nom_annexe=("/usr/local/lib/codecs/" "/usr/lib/codecs") #ligne de l'erreur
repertoire_nom_annexe_index=0
repertoire_taille_annexe=${#repertoire_nom_annexe[*]}
tableau_extension=(".ax" ".drv" ".dll" ".xa" ".acm" ".vwp" ".so" ".so.6.0" ".DLL" ".qtx" ".qts")
tableau_taille=${#tableau_extension[*]}
tableau_index=0
if [ ! -d $repertoire_nom_principal ]
then
mkdir $repertoire_nom_principal
fi
while [ $repertoire_nom_annexe_index -ne $repertoire_taille_annexe ]
do
if [ ! -d ${repertoire_nom_annexe[$repertoire_nom_annexe_index]} ]
then
mkdir ${repertoire_nom_annexe[$repertoire_nom_annexe_index]}
fi
repertoire_nom_annexe_index=`expr $repertoire_nom_annexe_index + 1`
done
while [ $tableau_index -ne $tableau_taille ]
do
nombre_fichier=`ls -l | grep ${tableau_extension[$tableau_index]} | cut -c 54- | wc -l`
echo $nombre_fichier
tableau_index=`expr $tableau_index + 1`
done
en exécution "normal" le resultat est le suivant :
voodoo@linux:~/win32codec$ ./install
mkdir: ne peut créer le répertoire `/usr/lib/win32': Permission non accordée
mkdir: ne peut créer le répertoire `/usr/local/lib/codecs/': Permission non accordée
mkdir: ne peut créer le répertoire `/usr/lib/codecs': Permission non accordée
13
7
66
9
17
2
14
11
3
4
1
en exécution "root" cela donne :
voodoo@linux:~/win32codec$ sudo ./install
Password:
./install: 18: Syntax error: "(" unexpected
..le script est le même dans les deux cas, mais quand je l'exécute en super utilisateur il me retourne une erreur. Quelqu'un connaîtrais t'il la raison de cette erreur?
merci
Dernière modification par vo0do0 (Le 04/07/2007, à 11:37)
Hors ligne
#2 Le 04/07/2007, à 09:25
- vo0do0
Re : [résolue] Script Bash, problème de syntaxe...
un petit peut d'aide ne me ferais pas de mal... merci
Hors ligne
#3 Le 04/07/2007, à 09:54
- toto4455
Re : [résolue] Script Bash, problème de syntaxe...
le probleme semble venir de l'affectation du tableau.
voodoo@linux:~/win32codec$ sudo ./install
Password:
./install: 18: Syntax error: "(" unexpected
on dirais que par le sudo , les tableaux de bash ne passent plus .
# !/bin/bash
tab=("un" "deux" "trois")
echo "tab[1]=" ${tab[1]}
./t.sh
tab[1]= deux
sudo ./t.sh
./t.sh: 2: Syntax error: "(" unexpected
sudo bash -c ./t.sh
tab[1]= deux
tu devrais essayer en utilisant la syntaxe suivante.
cela semble marcher
sudo bash -c ./monscript.sh
#4 Le 04/07/2007, à 11:31
- vo0do0
Re : [résolue] Script Bash, problème de syntaxe...
je te remerci je test sa tout de suite et je te dit se que sa donne...
edit : Oui en effet sa marche sans problème de cette manière... je ne comprend toujours pas pourquoi sa retourne cette erreur... mais l'important c'est déjà que le script fonctionne! merci
Dernière modification par vo0do0 (Le 04/07/2007, à 11:36)
Hors ligne
#5 Le 04/07/2007, à 13:33
- Link31
Re : [résolue] Script Bash, problème de syntaxe...
Parce qu'un simple sudo semble lancer la commande dans le shell de base sh...
Hors ligne
#6 Le 04/07/2007, à 13:42
- vo0do0
Re : [résolue] Script Bash, problème de syntaxe...
pourtant malgré "sudo", grace à :
# !/bin/bash
il devrait comprendre que c'est du bash...:/
Hors ligne
#7 Le 04/07/2007, à 13:43
- Link31
Re : [résolue] Script Bash, problème de syntaxe...
# !/bin/bash
Euh, un shabang ça s'écrit plutôt comme ça :
#!/bin/bash
Hors ligne
#8 Le 04/07/2007, à 15:55
- vo0do0
Re : [résolue] Script Bash, problème de syntaxe...
je ne le savait pas
Hors ligne
#9 Le 04/07/2007, à 16:02
- vo0do0
Re : [résolue] Script Bash, problème de syntaxe...
Je vais quand meme vous donnez la petite réalisation à laquelle vous avez participé
les sources :
win32codec.tar.gz
le paquet :
win32codec_20070704-1_i386.deb
description :
Ce paquet sert à installer des codecs du type real video, quicktime, etc, a l'emplacement ou les programmes tel que mplayer, xine, etc, vont les chercher quand ils lise une video.
Hors ligne