#26 Le 07/11/2009, à 18:55
- VivienD
Re : Questions d'un novice en script
Pas de problème, enjolras.
PS: Par contre ce serait nickel-chrome si tu numérotais les questions (qu'on s'y retrouve plus facilement).
[…] puisque les hommes aiment selon leur fantaisie et craignent à la discrétion du Prince, le Prince prudent et bien avisé se doit de fonder sur ce qui dépend de lui, non pas sur ce qui dépend des autres ; […]
Machiavel, Le Prince, Chapitre XVII.
Hors ligne
#27 Le 07/11/2009, à 18:57
- Кຼزດ
Re : Questions d'un novice en script
-comment on peut affecter la sortie d'une fonction a une variable ?
et jevoudrais un truc du genre :$var2=`test()`
Tu as plusieurs choix.
tout d'abord, le exit quitte le terminal ouvert, donc c'est pas forcément ce que tu veux faire
Pour récupérer la sortie standard (les messages affichés classiquement, type echo), il faut faire
var2=$(test)
Comme dit plus haut, un exit n quitte le terminal en cours en renvoyant la valeur n; tu peux récupérer cette valeur qui est contenue dans la variable $?.
Par exemple :
bash -c 'exit 42'
echo "$?"
renvoie 42.
-comment entrer les argument lors de l'appel de la fonction ?
test(1)
ne semble pas marcher
nitest() 1
merci de votre aide
test 1
dou
Hors ligne
#28 Le 07/11/2009, à 18:59
- geenux
Re : Questions d'un novice en script
test() {
echo $(($1+$2))
}
retour=`test 3 5`
echo $retour
Le exit sert à quitter le script en renvoyant un code d'erreur, pas à returner la valeur d'une fonction.
Hors ligne
#29 Le 07/11/2009, à 19:01
- enjolras
Re : Questions d'un novice en script
Merci beaucoup
A la découverte d'un nouveau continent...
Hors ligne
#30 Le 08/11/2009, à 15:24
- VivienD
Re : Questions d'un novice en script
13 -
sed -e 's/^\(.*\)$/\\textbf{\1} \\\\/g' /tmp/test
Je te conseille tout de même de te renseigner au minimum sur les commandes sed, awk, sort, tr, cut, c'est des très grand classiques utilisés par presque tous les scripts. Si tu ne les connais pas, tu sera réduit à demander toutes les 5 lignes de tes scripts...
J'y tâcherai
Sinon, j'ai tapé un code sed pour la substitutions des lettres accentuées ; tout fonctionne bien sauf quand il y a un accent aigu. Je souhaite en effet que, par exemple, les é deviennent des \'e, mais l'apostrophe pose problème. J'ai tapé le code ci-dessous et le script me balance une erreur à une cause d'un caractère de fin de fichier (EOF) prématuré lors de la recherche du « ' » correspondant.
sed 's/é/\\\'e/g'
Qu'est-ce que j'ai fait de faux ?
[…] puisque les hommes aiment selon leur fantaisie et craignent à la discrétion du Prince, le Prince prudent et bien avisé se doit de fonder sur ce qui dépend de lui, non pas sur ce qui dépend des autres ; […]
Machiavel, Le Prince, Chapitre XVII.
Hors ligne
#31 Le 08/11/2009, à 15:42
- Кຼزດ
Re : Questions d'un novice en script
sed "s#é#\'e#g"
?
dou
Hors ligne
#32 Le 08/11/2009, à 16:03
- VivienD
Re : Questions d'un novice en script
Merci mais finalement c'est :
sed "s#é#\\\'e#g"
Ton code ne m'affiche que 'e.
[…] puisque les hommes aiment selon leur fantaisie et craignent à la discrétion du Prince, le Prince prudent et bien avisé se doit de fonder sur ce qui dépend de lui, non pas sur ce qui dépend des autres ; […]
Machiavel, Le Prince, Chapitre XVII.
Hors ligne
#33 Le 08/11/2009, à 16:05
- Кຼزດ
Re : Questions d'un novice en script
Merci mais finalement c'est :
sed "s#é#\\\'e#g"
Ton code ne m'affiche que 'e.
ah oui, pardon, j'avais oublié de remettre ça après avoir testé
dou
Hors ligne
#34 Le 08/11/2009, à 19:10
- VivienD
Re : Questions d'un novice en script
J'aimerais limiter les effets du code suivant, entre la première et la troisième virgule rencontrées.
sed -e 's/^\(.*\)$/\\textbf{\1} \\\\/g' /tmp/test
Est-ce possible ?
[…] puisque les hommes aiment selon leur fantaisie et craignent à la discrétion du Prince, le Prince prudent et bien avisé se doit de fonder sur ce qui dépend de lui, non pas sur ce qui dépend des autres ; […]
Machiavel, Le Prince, Chapitre XVII.
Hors ligne
#35 Le 08/11/2009, à 20:22
- geenux
Re : Questions d'un novice en script
Oui, possible, je comptais te laisser chercher, mais vu que j'ai eu du mal, voilà une possibilité :
sed -e '^s/\([^,]*,\)\{2\}\(.*\),.*$/\\textbf{\2} \\\\/g' /tmp/test
Explications :
\([^,]*,\)\{2\} : parcours la chaine tant qu'une virgule n'a pas été trouvée, quand on en trouve une il faut lui dire de passer après, d'où la deuxième virgule. On répète cette action 2 fois, ce qui nous amène à la 3ème colone.
\(.*\) : on capture ce qui nous intéresse
,.* : on s'arrête à la virgule suivante (cad la 3ème ici)
Il y a sans doute plus propre, mais ça fonctionne bien.
Hors ligne
#36 Le 24/11/2009, à 17:22
- VivienD
Re : Questions d'un novice en script
Bonsoir,
Dans la série "C'est possible, ça ? O.O" :
17- Je voudrais juste savoir s'il est possible de faire de faire 100% pur sed (avec une en-tête du genre « #!/bin/sed »). Si c'est le cas, j'aimerais avoir un exemple comparatif (pas grave si l'exemple est bateau) de syntaxe entre une commande sed inséré dans un script bash et la même commande dans un script sed.
[…] puisque les hommes aiment selon leur fantaisie et craignent à la discrétion du Prince, le Prince prudent et bien avisé se doit de fonder sur ce qui dépend de lui, non pas sur ce qui dépend des autres ; […]
Machiavel, Le Prince, Chapitre XVII.
Hors ligne
#37 Le 24/11/2009, à 21:14
- geenux
Re : Questions d'un novice en script
sed -f fichier_sed
Il doit donc parfaitement être possible de faire un fichier sed exécutable. Jamais testé.
En mettant
#!/bin/sed -f
Dernière modification par geenux (Le 24/11/2009, à 21:14)
Hors ligne
#38 Le 05/12/2009, à 21:50
- VivienD
Re : Questions d'un novice en script
Bonsoir,
Dans la série "C'est possible, ça ? O.O" :
18- J'ai une fonction à faire en bash (une chouette histoire de récursion, ma foi…) mais je dois travailles des tableaux venant de l'extérieur de la fonction. C'est possible ?
Dernière modification par VivienD (Le 05/12/2009, à 22:00)
[…] puisque les hommes aiment selon leur fantaisie et craignent à la discrétion du Prince, le Prince prudent et bien avisé se doit de fonder sur ce qui dépend de lui, non pas sur ce qui dépend des autres ; […]
Machiavel, Le Prince, Chapitre XVII.
Hors ligne
#39 Le 06/12/2009, à 00:22
- sputnick
Re : Questions d'un novice en script
Pour recuperer la valeure de la tape sur le clavier sans que ça s'affiche :
read -n1 -s
echo $REPLY
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#40 Le 06/12/2009, à 13:16
- VivienD
Re : Questions d'un novice en script
En fait je traite des tableaux dans le programme principal. À un moment le programme appelle une fonction qui doit travailler avec ces tableaux.
[…] puisque les hommes aiment selon leur fantaisie et craignent à la discrétion du Prince, le Prince prudent et bien avisé se doit de fonder sur ce qui dépend de lui, non pas sur ce qui dépend des autres ; […]
Machiavel, Le Prince, Chapitre XVII.
Hors ligne
#41 Le 06/12/2009, à 18:12
- Totor
Re : Questions d'un novice en script
Bonsoir,
Dans la série "C'est possible, ça ? O.O" :
18- J'ai une fonction à faire en bash (une chouette histoire de récursion, ma foi…) mais je dois travailles des tableaux venant de l'extérieur de la fonction. C'est possible ?
oui.
mais décris ton soucis plus précisément.
-- Lucid Lynx --
Hors ligne
#42 Le 06/12/2009, à 20:30
- VivienD
Re : Questions d'un novice en script
Je vous tape l'algo' : ça sera mieux qu'un long, fastidieux et hasardeux discours d'un petit programmeur.
VARIABLES:
int tab_p[11], tab_d[11] // tableaux de onze valeurs numérotées de 0 à 10
int i //index pour les boucles
int S //résultat de la fonction
FONCTION:
int fnc(int tab_p[], int tab_d[], S) // la fameuse fonction
//Un truc bidon
pour(i = 0 ; i≤10 ; i++)
S += tab_p[i]
S += tab_d[i]
fin-pour
fin-fonction
PROGRAMME PRINCIPAL:
//initialisation
pour(i=0 ; i≤5 ; i++)
tab_d[i]=1
tab_p[i]=1
fin-pour
pour(i=6 ; i≤10 ; i++)
tab_d[i]=0
tab_p[i]=0
fin-pour
S = 0
//affichage du résultat obtenu par la fonction fnc en traitant toutes les valeurs des deux tableaux tab_p[] et tab_d[]
afficher«fnc(tab_p[],tab_d[], S)»
[…] puisque les hommes aiment selon leur fantaisie et craignent à la discrétion du Prince, le Prince prudent et bien avisé se doit de fonder sur ce qui dépend de lui, non pas sur ce qui dépend des autres ; […]
Machiavel, Le Prince, Chapitre XVII.
Hors ligne
#43 Le 06/12/2009, à 22:15
- Totor
Re : Questions d'un novice en script
Où est la récursivité ?
Dans le cas avancé, le plus simple est de ne pas passer les tableaux en paramètre de la fonction mais de profiter du fait qu'ils soient accessibles depuis ta fonction (une histoire de portée).
Pourquoi ne pas les passer en paramètre : tout simplement parce que ce serait se compliquer la vie. le fait de passer un tableau en paramétre est particulier en bash puisque chaque valeur du tableau correspond à un argument. Donc à moins de passer également le nombre de valeur se trouvant dans les tableaux, tu risques de galérer pour retrouver tes petits (à moins que leur longueurs soient toujours fixes).
-- Lucid Lynx --
Hors ligne
#44 Le 06/12/2009, à 23:17
- VivienD
Re : Questions d'un novice en script
Pour la récursion je n'avais plus l'exemple en tête et je n'avais pas l'algo sous la main (il était paumé dans le bazar qui orne mon bureau) ; tout ce dont je me souvenais c'est qu'il y avait trois boucles « pour » et deux « si » imbriqués les uns dans les autres, que le rappel de la fonction était tout au fond de ce pêle-mêle et qu'il pouvait y avoir un gros pépin.
Maintenant je l'ai retrouvé mais la supposée erreur n'est pas corrigée ; elle concerne np et nd dans l'algo.
int fnc(int tab_p[],int tab_d[],int S)
int np, nd //variables-limites
int j, k, l //indices de boucle
//initialisation
np = 0
nd = 0
pour(j=0 ; j≤10 ; j++)
np += tab_p[j]
nd += tab_d[j]
fin-pour
//L'imbriquation
pour(j=1 ; j≤4 ; j++)
pour(k=0 ; k≤(np-1) ; k++)
si(tab_d[k]=1)
alors
tab_d[k] = 0
pour(l=0 ; l≤(np-1) ; l++)
si(tab_d[l]=1)
alors
tab_d[l] = 0
S++
tab_p[np] = 1
tab_d[np] = 1
fnc(tab_p[],tab_d[],S) //La récursion
fin-si
fin-pour
fin-si
fin-pour
fin-pour
[…] puisque les hommes aiment selon leur fantaisie et craignent à la discrétion du Prince, le Prince prudent et bien avisé se doit de fonder sur ce qui dépend de lui, non pas sur ce qui dépend des autres ; […]
Machiavel, Le Prince, Chapitre XVII.
Hors ligne
#45 Le 31/05/2010, à 15:40
- VivienD
Re : Questions d'un novice en script
Bonjour
Je déterre ce sujet — et me découvre par la même occasion une vocation pour l'archéologie … ou pas — car ça m'évite d'en créer un autre et le recyclage c'est bon pour l'environnement — quelle excuse à la con.
Ne déterrant pas le sujet pour des prunes, voici mes nouvelles questions :
Dans la série "C'est possible, ça ? O.O" :
19-Est-il possible de supprimer un alias que l'on a créé et qui ne nous sert plus ?
20-Est-il possible de gérer des options ? Si oui, comment ?
Voici un exemple pour illustrer ce que j'entends par « option » :
ls -lA ~/Documents
Ici, -lA est l'option de ls.
Merci d'avance.
Dernière modification par VivienD (Le 31/05/2010, à 15:40)
[…] puisque les hommes aiment selon leur fantaisie et craignent à la discrétion du Prince, le Prince prudent et bien avisé se doit de fonder sur ce qui dépend de lui, non pas sur ce qui dépend des autres ; […]
Machiavel, Le Prince, Chapitre XVII.
Hors ligne
#46 Le 31/05/2010, à 17:03
- Totor
Re : Questions d'un novice en script
19 :
Oui : unalias <nom_alias>
20 :
Oui avec getopts : Pour exemple
-- Lucid Lynx --
Hors ligne
#47 Le 31/05/2010, à 17:21
- VivienD
Re : Questions d'un novice en script
Merci.
Je m'en vais copier ton script sur un .txt et analyser ça tranquillement.
[…] puisque les hommes aiment selon leur fantaisie et craignent à la discrétion du Prince, le Prince prudent et bien avisé se doit de fonder sur ce qui dépend de lui, non pas sur ce qui dépend des autres ; […]
Machiavel, Le Prince, Chapitre XVII.
Hors ligne
#48 Le 31/05/2010, à 18:07
- Totor
Re : Questions d'un novice en script
consulte le manuel du bash pour plus de détail sur getopts
-- Lucid Lynx --
Hors ligne
#49 Le 13/06/2010, à 14:28
- VivienD
Re : Questions d'un novice en script
Désolé, j'ai beau essayer de comprendre via ton script, Totor, mais ça me reste flou.
[…] puisque les hommes aiment selon leur fantaisie et craignent à la discrétion du Prince, le Prince prudent et bien avisé se doit de fonder sur ce qui dépend de lui, non pas sur ce qui dépend des autres ; […]
Machiavel, Le Prince, Chapitre XVII.
Hors ligne