[Script shell] Debutant

Debutant [Script shell] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 04-07-2007 à 14:54:05    

bonjour,  
 
je me rappel plus trop des commandes de base d'argument en script shell et  
ce n 'est pas evident de chercher sur google faute de caracteres incomprehensibles
 
Je recherche les commandes exact pour tronquer un caracter à partir d'un point ou d'une lettre
 
d'apres mes souvenirs c'était ##+*. ( mais en fait je me souviens plus)  
 
prenons un exemple une chaine de caractere :  "script.shel.alpha"
 
et je souhaite extraire, de ce mot, la parti "script" et donc dire (en francais ) prendre la chaine de caractere jusqu'au premier "." et tronquer le reste  
 
 :whistle: afin d obtenir : "script"
 
un peu pour donner un programme de cette forme  

Code :
  1. bash# ./prog script.shell.alpha
  2. argument 1 : script
  3. argument 2 : shell
  4. argument 3 : alpha
  5. // ce script aura pour but diviser mon argument en plusieur fraction delimiter par un .
  6. // si j 'edite mon fichier prog
  7. #!/bin/bash
  8. $all=$1
  9. $1=${##+.*$all } // script
  10. $2=${{##*.+$all}##+.*$all} // enleve tout avant le 1er "." puis enleve tous apres le dernier "."
  11. $3=${##*.+$all}// aplah
  12. echo ... $1
  13. echo ... $2
  14. echo ... $3


 
 
je precise que c'est ce qu il y a en rouge que je veux connaitre car je sais que la syntaxe est mauvaise ...  
si vous avez un petit tuto sous la main ca m aiderai bien ...
${##+.*$all }
${{##*.+$all}##+.*$all}
$3=${##*.+$all}
 
Egalement :
 
les differentes commandes d arguments avec leurs definitions je suis sur d'en oublier :  
$1 argument 1  
$# tous les arguments
$* ? sais plus
$0 ?

 
 
 
Merci


Message édité par jeremie95 le 04-07-2007 à 14:56:43
Reply

Marsh Posté le 04-07-2007 à 14:54:05   

Reply

Marsh Posté le 04-07-2007 à 14:57:03    

[:cerveau dawa psycho]
 

Code :
  1. echo "blabla.blibli.blublu" | awk -F. '{print $x}'


 
Où x est le numéro de la partie à récupérer :) (1 pour la première, 2 pour la deuxième etc ...)


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 04-07-2007 à 15:01:09    

merci de cette reponse rapide :)
 
mais je prefererais avoir la methode que j ai enumeré car je vais avoir une utilisation autre ...
 
et je prefererais retrouver mes commandes que j ai oublier quand j'etais piti  
 
meme si cette commande est logique selon moi ...
 
et les argument $* $0 etc .. tu te souviens de la liste complete ?  
 
ce serais plutot pour faire un if [ $chaine de caractere tronqué = rpm ] ...


Message édité par jeremie95 le 04-07-2007 à 15:02:39
Reply

Marsh Posté le 04-07-2007 à 15:03:04    

sed et cut servent pas à ça ?
 
Avant de me faire agresser: j'y connais rien en prog'. :/


Message édité par Fork Bomb le 04-07-2007 à 15:03:40

---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 04-07-2007 à 15:10:16    

tu trouveras toutes les définitions de variable dans la page de man de bash, mais rapidement:
$0 = nom de la commande utilisée
$1 = premier paramètre
$2 = 2e paramètres
$3 = etc ...
$# = nombre de paramètres
$* = liste des paramètres (je crois)
$@ = tableau des paramètres (je crois aussi)
 
etc ...
 
Sinon, oui, y'a cut qui marche bien, mais awk caÿmieux :o
 
Ca sera quoi comme utilisation ? :gratgrat:


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 04-07-2007 à 16:25:51    

$ toto=script.shel.alpha
$ echo ${toto%%.*}
script


${var%%pattern} supprime de la fin de <var> le plus de caractères possible qui matchent <pattern> (au sens "filename expansion", pas regexp).
 
Edit : Et pour ce qui est du tuto, tu fais "man bash" et tu vas au paragraphe "Parameter Expansion" (ou tu cherche "%%" ou "##" ).


Message édité par matafan le 04-07-2007 à 21:49:40
Reply

Marsh Posté le 04-07-2007 à 16:27:12    

Citation :

$* = liste des paramètres (je crois)


oui
 

Citation :

$@ = tableau des paramètres (je crois aussi)


je pense aussi
 
$$ = PID du processus courant
 
$? = code de retour de la dernière commande exécutée

Reply

Marsh Posté le 04-07-2007 à 16:28:33    

fighting_falcon a écrit :


oui
 
je pense aussi
 
$$ = PID du processus courant
 
$? = code de retour de la dernière commande exécutée


 [:wedgeant]  
 
et merci de la confirmation, j'ai pas la page de man de bash sous la main :jap:


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 04-07-2007 à 16:34:02    

Encore une fois, man bash, paragraphe "Special Parameters"...

Reply

Marsh Posté le 04-07-2007 à 17:00:33    

@matafan tu me confirmes ?
 
 
$ toto=script.shel.alpha  
$ echo ${toto*.%%}  
alpha  
 
 
 
merci beaucoup en tous cas :)
 


Message édité par jeremie95 le 04-07-2007 à 17:01:31
Reply

Marsh Posté le 04-07-2007 à 17:00:33   

Reply

Marsh Posté le 04-07-2007 à 19:22:32    

${variable#motif} supprime le préfixe de $variable le plus court correspondant au motif.
${variable##motif} supprime le préfixe de $variable le plus long correspondant au motif.
${variable%motif} supprime le suffixe de $variable le plus court correspondant au motif.
${variable%%motif} supprime le suffixe de $variable le plus long correspondant au motif.

Reply

Marsh Posté le 05-07-2007 à 10:29:58    

merci

Reply

Marsh Posté le 05-07-2007 à 18:36:49    

${1##*.}
pour l argument 1  
merci

Reply

Marsh Posté le 21-08-2008 à 14:29:34    

Bonjour, je veux crée un script shell pour lancer Xchat rejoint automatique au canale que je préfere! s 'il vous plait, aider moi car j'suis debutant

Reply

Marsh Posté le 21-08-2008 à 14:32:08    

Bonjour, je veux crée un script shell pour lancer Xchat en rejoingant  automatiquement au canale que je préfere! s 'il vous plait, aider moi car j'suis debutant

Reply

Marsh Posté le 22-08-2008 à 09:09:21    

C'est de base dans Xchat

Reply

Marsh Posté le 22-08-2008 à 18:35:13    

macfennec a écrit :

C'est de base dans Xchat


+1

Reply

Sujets relatifs:

Leave a Replay

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