aide commande bash (encore re:calcul d'expression mathématique)

aide commande bash (encore re:calcul d'expression mathématique) - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 24-02-2003 à 12:05:12    

je voudrais récupérer dans un script bash le nom du programme lui-même. Il y a bien la variable $0 mais cette variable insère également le chemin, or je veux que le nom du fichier:
echo "$0"
/rep/nom
 
et moi je veux "nom"
 
comment le récupérer sous bash?
 
Ensuite, je voudrais le convertir en majuscule. Comment faire?


Message édité par bobor le 24-02-2003 à 23:19:26

---------------
Gitan des temps modernes
Reply

Marsh Posté le 24-02-2003 à 12:05:12   

Reply

Marsh Posté le 24-02-2003 à 12:07:43    

j'avais fait un tomic sur la conversion en minuscule, ca doit s'approcher pour la conv en majuscule
de plsu tu devrai trouver ce qu'il te faut pr n'avoir que le nom du prog dnas ce meme topic


---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 24-02-2003 à 12:14:49    

nom=$(echo ${0##*/}|tr a-z A-Z)


Message édité par minusplus le 24-02-2003 à 12:15:00
Reply

Marsh Posté le 24-02-2003 à 12:30:23    

:jap:


---------------
Gitan des temps modernes
Reply

Marsh Posté le 24-02-2003 à 12:54:47    

J'ai un autre problème:
voici une partie du script:
 

CONF_PARA="$NAME""_CONF"
DMZ=`sed -n -e '/^SMB_DMZ/p' ${CONF_FILE} | sed -e 's/\(.*\)\=\(.*\)/\2/'`
CONF=`sed -n -e '/^${CONF_PARA}/p' ${CONF_FILE} | sed -e 's/\(.*\)\=\(.*\)/\2/'`


 
la première commande en sed (SMB_DMZ) marche parfaitement (j'en avais ch... pour la trouver  :D )
Elle permet d'aller chercher dans le fichier CONF_FILE (variable) l'occurence "SMB_DMZ=paramètre" et de récupérer "paramètre".
La deuxième est identique (occurence en SMB_CONF avec NAME="SMB" ) mais je remplace SMB_DMZ par une variable. Et là cela ne marche plus, il ne ressort qu'une chaine vide.
Une idée?


---------------
Gitan des temps modernes
Reply

Marsh Posté le 24-02-2003 à 13:08:50    

Bobor a écrit :

J'ai un autre problème:
voici une partie du script:
 

CONF_PARA="$NAME""_CONF"
DMZ=`sed -n -e '/^SMB_DMZ/p' ${CONF_FILE} | sed -e 's/\(.*\)\=\(.*\)/\2/'`
CONF=`sed -n -e '/^${CONF_PARA}/p' ${CONF_FILE} | sed -e 's/\(.*\)\=\(.*\)/\2/'`


 
la première commande en sed (SMB_DMZ) marche parfaitement (j'en avais ch... pour la trouver  :D )
Elle permet d'aller chercher dans le fichier CONF_FILE (variable) l'occurence "SMB_DMZ=paramètre" et de récupérer "paramètre".
La deuxième est identique (occurence en SMB_CONF avec NAME="SMB" ) mais je remplace SMB_DMZ par une variable. Et là cela ne marche plus, il ne ressort qu'une chaine vide.
Une idée?

trop compliqué ! :D ton premier sed est simplement un grep !
pour le 2ème cas c'est passke ton $CONF_PARA est entre single quotes, il n'est donc pas interprété.
 
sinon :  
 


DMZ=`sed -n 's-[ \t]*SMB_DMZ[ \t]*=[ \t]*--p' $CONF_FILE`
CONF=`sed -n "s-[ \t]*$CONF_PARA[ \t]*=[ \t]*--p" $CONF_FILE`


Message édité par minusplus le 24-02-2003 à 13:15:41
Reply

Marsh Posté le 24-02-2003 à 13:46:44    

Bobor a écrit :

je voudrais récupérer dans un script bash le nom du programme lui-même. Il y a bien la variable $0 mais cette variable insère également le chemin, or je veux que le nom du fichier:
echo "$0"
/rep/nom
 
et moi je veux "nom"
 
comment le récupérer sous bash?


basename $0
C'est la _vrai_ commande bash (c'est juste plus propre/lisible quoi...)

Reply

Marsh Posté le 24-02-2003 à 13:58:32    

e_esprit a écrit :


basename $0
C'est la _vrai_ commande bash (c'est juste plus propre/lisible quoi...)

ah ben non, justement, basename c'est pas bash ! [:spamafote]

Reply

Marsh Posté le 24-02-2003 à 14:07:03    

:D Oups, c'est vrai, j'ai dis une grosse connerie...
C'est une commande système... sorry !!! :sweat:

Reply

Marsh Posté le 24-02-2003 à 14:08:12    

e_esprit a écrit :

:D Oups, c'est vrai, j'ai dis une grosse connerie...
C'est une commande système... sorry !!! :sweat:  

disons que basename c'est plus portable ! ;)

Reply

Marsh Posté le 24-02-2003 à 14:08:12   

Reply

Marsh Posté le 24-02-2003 à 20:51:54    

bah j'apprends des choses!
 
pour ma commande "compliquée", je la garde car elle a fait ses preuves  :D  
 
Maintenant nouveau problème:
 
j'ai une variable RATE=1/2
une VARIABLE UPLINK=128
je souhaite calculer le résultat
RES=$RATE*$UPLINK
mais suivant mes essais avec des {}, [], "" et autres joyeusetés j'ai soit la chaîne "1/2*128" soit 0.
 
Encore un peu d'aide?  :D


---------------
Gitan des temps modernes
Reply

Marsh Posté le 24-02-2003 à 22:33:11    

et avec RATE=0.5 ca marche pas mieux ?

Reply

Marsh Posté le 24-02-2003 à 22:41:46    

non pareil


---------------
Gitan des temps modernes
Reply

Marsh Posté le 25-02-2003 à 01:09:17    

je crois que pour les expressions mathematiques en bash c est du genre :
 
 

Code :
  1. RES=$(($RATE*$UPLINK))

 
 
et il me semble que les variables doivent etre des entiers , neanmooins dans ton cas ca marche le resultat RES etant un entier

Reply

Marsh Posté le 25-02-2003 à 01:18:12    

j'ai trouvé. Effctivement, le résultat est un entier. Donc j'ai inversé les 2 variables et tout roule: RES=$(($i*$j))


---------------
Gitan des temps modernes
Reply

Marsh Posté le 27-02-2003 à 11:35:36    

Bobor a écrit :


 
pour ma commande "compliquée", je la garde car elle a fait ses preuves  :D  

[:spamafote]

Reply

Sujets relatifs:

Leave a Replay

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