[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: petit shell script



Guillaume wrote:
> jerome kaluza wrote:
>>
>>
>> Le 05/07/06, *laurent besson* <lolo@system-linux.net
>> <mailto:lolo@system-linux.net>> a écrit :
>>
>>     Le mercredi 5 Juillet 2006 10:00, Guillaume a écrit:
>>      > #!/bin/bash
>>      >
>>      > controle=$1
>>      > donnees=$2
>>      > if [ -z $controle  ]; then
>>     Il y a un _ESPACE_ de trop entre $controle et ]
>>      >      echo "erreur: fichier de controle non specifie"
>>      >      exit 1
>>      > fi
>>      > if [ -z $donnees  ]; then
>>     idem
>>      >      echo "fichier csv non specifie"
>>      >      exit 1
>>      > fi
>>      >
>>      > exit 0
>>
>>     Sinon c'est bon !
>>
>> merci ca marche bien =))
> 
> c'est sensible à l'espace en trop parce que j'ai pas mis les "" autour
> des variables !!

Non, le nombre d'espace n'a aucune importance quand bash découpe la
commande et ses arguments. On peut donc mettre autant d'espace qu'on
veut (parfois utile quand on veut aligner les données pour une meilleure
lisibilité)

Par contre, je mettrais tes arguments entre "" pour deux raisons :
1) ils peuvent être vide. Dans ce cas, ça a peu d'importance car
c'est le dernier teste de la commande '['. Ça serait différent si tu
avais :
if [ -z $controle -o -z $donnees ]; then
qui est complètement différent de :
if [ -z "$controle" -o -z "$donnees" ]; then

2) ils peuvent avoir des espaces. Essaye d'appeler ton script avec
./script "argument avec espace" "toto titi"


  Enfin, par rapport à une autre remarque dans ce thread, les commandes
'[' et 'test' font la même chose et peuvent être interchangées comme le
souhaite le développeur. Elles existent sous forme de programmes
dans /usr/bin/, mais ce sont aussi des commandes internes à bash
(utilisées en priorité par bash) donc dont la documentation précise se
trouve dans 'man bash' et pas 'man test' ou 'man ['

  A+
    Vincent



Reply to: