Commande différence entre "./" et "sh" ( resolue )

Commande différence entre "./" et "sh" ( resolue ) - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 28-04-2005 à 16:29:35    

Bonjour,
 
Encore merci à ceux qui m'ont aider pour mon problème précédent.
Mais voilà un nouveaux souci.
 
Lorsque j'appelle mon script shell dont voici le code :
Il lit le paramètre fourni en entrée ( une liste de fichier séparés par de "|" ) et vérifie leur présence.
 
#--------------------------------------------------------------------------------
 
FICHIER_SUR_HOST_SRC="$1"
 
if [ $# = 1 ] ;  
then
VarTmpFichier= ${1//[!|]}
VarNbFichier=${#VarTmpFichier}
VarNbFichier=`expr ${VarNbFichier} + 2`
 
cptfile=1
while [ $cptfile -lt $VarNbFichier ];
   do
      FICHIER_SUR_HOST_SRC_TMP=`expr $FICHIER_SUR_HOST_SRC|cut -f$cptfile -d "|"`
      echo $FICHIER_SUR_HOST_SRC_TMP
      if [ ! -f $FICHIER_SUR_HOST_SRC_TMP ] ; then
          echo "KO BOUCLE"
      else  
          echo "OK BOUCLE"
          cptfile=`expr ${cptfile} + 1`
      fi
   done
else
echo "ERREUR PARAM"
fi
 
#--------------------------------------------------------------------------------
 
J'ai un souci, lorsque je l'appelle en sh Nomduchemin/NomduScript, j'ai l'erreur bad susbtitution.
Après recherche, j'ai remarque que si je le lance en "./NomduScript en me plaçant directement, il fonctionne.
 
Quel est le problème ?
Et comment est il possible de le lancher avec "sh" sans qu'il me fasse l'erreur
 
Merci d'avance.


Message édité par claudic le 29-04-2005 à 09:00:46

---------------
--------------------------------------------
Reply

Marsh Posté le 28-04-2005 à 16:29:35   

Reply

Marsh Posté le 28-04-2005 à 16:43:21    

par hasard, il ne faut pas rajouter #!/bin/sh au début du script?

Reply

Marsh Posté le 28-04-2005 à 17:16:59    

elpoulpo a écrit :

par hasard, il ne faut pas rajouter #!/bin/sh au début du script?


Oui c'est mieux, il plante dans les 2 cas désormais.


---------------
--------------------------------------------
Reply

Marsh Posté le 28-04-2005 à 17:58:01    

A mon avis, to script est un script bash et dans ta distribution, /bin/sh ne peut pas utiliser les fonctionalités de syntaxe avancées de bash
 
execute donc ce script par "bash Nomduchemin/NomduScript" ou met comme première ligne, #!/bin/bash et execute le en ./NomduScript ( ou mieux, fait les 2 )

Reply

Marsh Posté le 29-04-2005 à 09:00:22    

Kristoph a écrit :

A mon avis, to script est un script bash et dans ta distribution, /bin/sh ne peut pas utiliser les fonctionalités de syntaxe avancées de bash
 
execute donc ce script par "bash Nomduchemin/NomduScript" ou met comme première ligne, #!/bin/bash et execute le en ./NomduScript ( ou mieux, fait les 2 )


Merci merci
 
"bash Nomduchemin/NomduScript" , çà marche, c'est exactement ce qu'il me fallait.
 
il suffisait de remplacer ma sh par bash, vous êtes géniaux.
 
Je savais bien que je pouvais avoir ma solution ici.


---------------
--------------------------------------------
Reply

Marsh Posté le 29-04-2005 à 11:20:09    

Par contre, si ton script est destiné à être utilisé sur plusieurs machine differentes, essaye de le rendre plus "portable" en le rendant fonctionnel avec sh (par exemple, en n'utilisant pas des fonctions spécifiques à bash). Bash n'est pas toujours installé (bon ok, c'est rare... :D)


---------------
BOFH excuse #400:We are Microsoft.  What you are experiencing is not a problem; it is an undocumented feature.
Reply

Marsh Posté le 02-05-2005 à 13:33:03    

sebchap a écrit :

Par contre, si ton script est destiné à être utilisé sur plusieurs machine differentes, essaye de le rendre plus "portable" en le rendant fonctionnel avec sh (par exemple, en n'utilisant pas des fonctions spécifiques à bash). Bash n'est pas toujours installé (bon ok, c'est rare... :D)


 
Bien vu, c'est pour cette raison que j'ai du la modifié ce matin.
Et puis comme cà je respecte les normes de la société.
 
Ouf, j'en ai terminé, ça fait du bien.


---------------
--------------------------------------------
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed