Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.os.unix > #8119 > unrolled thread
| Started by | Jo Engo <yl@icite.fr> |
|---|---|
| First post | 2023-12-09 14:09 +0000 |
| Last post | 2023-12-11 18:32 +0000 |
| Articles | 12 — 3 participants |
Back to article view | Back to fr.comp.os.unix
[bash] select Jo Engo <yl@icite.fr> - 2023-12-09 14:09 +0000
Re: [bash] select Jo Engo <yl@icite.fr> - 2023-12-09 21:15 +0000
Re: [bash] select Jo Engo <yl@icite.fr> - 2023-12-09 21:59 +0000
Re: [bash] select Jo Engo <yl@icite.fr> - 2023-12-10 16:52 +0000
Re: [bash] select Christian Weisgerber <naddy@mips.inka.de> - 2023-12-11 18:34 +0000
Re: [bash] select Jo Engo <yl@icite.fr> - 2023-12-13 14:38 +0000
Re: [bash] select Christian Weisgerber <naddy@mips.inka.de> - 2023-12-13 23:00 +0000
Re: [bash] select Jo Engo <yl@icite.fr> - 2023-12-14 15:21 +0000
Re: [bash] select Jo Engo <yl@icite.fr> - 2023-12-14 15:43 +0000
Re: [bash] select Christophe PEREZ <chris@novazur.fr> - 2023-12-14 18:51 +0000
Re: [bash] select Christian Weisgerber <naddy@mips.inka.de> - 2023-12-14 18:38 +0000
Re: [bash] select Christian Weisgerber <naddy@mips.inka.de> - 2023-12-11 18:32 +0000
| From | Jo Engo <yl@icite.fr> |
|---|---|
| Date | 2023-12-09 14:09 +0000 |
| Subject | [bash] select |
| Message-ID | <ul1sek$d5$2@rasp.pasdenom.info> |
[bash] select Voila je sèche. Je veux faire lire à select ses items dans un fichier. Après quelques essais infructueux sans le sed, j'arrive à un truc (très) lourd et qui ne marche pas <code> select toto in $(sed "s/^/\"/;s/$/\"/" menu); do echo $toto; done </> Qu'est-ce que je n'ai pas compris ? le sed fonctionne nickel mais select sépare les mots comme s'il n'y avait pas de double apostrophe. J'ai essayé avec de smples apostrophe mas c'est le même bingtz. Merci de votre aide -- Les vertus se perdent dans l'intérêt, comme les fleuves se perdent dans la mer. -+- François de La Rochefoucauld (1613-1680), Maximes 171 -+-
[toc] | [next] | [standalone]
| From | Jo Engo <yl@icite.fr> |
|---|---|
| Date | 2023-12-09 21:15 +0000 |
| Message-ID | <ul2ld2$d5$4@rasp.pasdenom.info> |
| In reply to | #8119 |
Le Sat, 9 Dec 2023 14:09:24 -0000 (UTC), Jo Engo a écrit : > <code> > select toto in $(sed "s/^/\"/;s/$/\"/" menu); do echo $toto; done </> Bon ça, donc, ça ne marche pas. J'ai trouvé un « solution » que je ne trouve pas du tout élégante mais qui « marche » : (pour tester) #!/bin/bash read -p "fichier de menu : " # attention, il y a bien un saut de ligne entre les quotes IFS=' ' select item in $(cat $filee) do echo $item # faire des trucs done # fin script Quelqu'un a quelque chose de mieux à me proposer ? -- Si l'électron nous a servi à comprendre beaucoup de choses, nous n'avons jamais bien compris l'électron lui-même. -+- Louis de Broglie -+-
[toc] | [prev] | [next] | [standalone]
| From | Jo Engo <yl@icite.fr> |
|---|---|
| Date | 2023-12-09 21:59 +0000 |
| Message-ID | <ul2nv8$2uo$1@rasp.pasdenom.info> |
| In reply to | #8120 |
Jo Engo a écrit : > Le Sat, 9 Dec 2023 14:09:24 -0000 (UTC), Jo Engo a écrit : > #!/bin/bash > read -p "fichier de menu : " filee en paramètre de read # sinon ça marchera pos > # attention, il y a bien un saut de ligne entre les quotes > IFS=' > ' select item in $(cat $filee) > do > echo $item > # faire des trucs > done > # fin script > Quelqu'un a quelque chose de mieux à me proposer ?
[toc] | [prev] | [next] | [standalone]
| From | Jo Engo <yl@icite.fr> |
|---|---|
| Date | 2023-12-10 16:52 +0000 |
| Message-ID | <ul4qc3$d5$8@rasp.pasdenom.info> |
| In reply to | #8120 |
Le Sat, 9 Dec 2023 21:15:14 -0000 (UTC), Jo Engo a écrit : > #!/bin/bash read -p "fichier de menu : " > # attention, il y a bien un saut de ligne entre les quotes (en fait je l'avais écrit sur une autre machine (mon téléphone android, avec un coquille) et je l'ai recopié de tête, rapido > IFS=' > ' select item in $(cat $filee) > do > echo $item > # faire des trucs done # fin scrip J'ai honte, je vous donne le script corrigé : #!/bin/bash read -p "fichier de menu : " filee # attention, il y a bien un saut de ligne entre les quotes IFS=' ' select item in $(cat $filee) # (*) do echo $item # faire des trucs done # fin script (*) j'étais pas convaincu par IFS='\n' un avis ? -- Espoir : On a vu l'homme-araignée hier soir. -+- Les nuls -+-
[toc] | [prev] | [next] | [standalone]
| From | Christian Weisgerber <naddy@mips.inka.de> |
|---|---|
| Date | 2023-12-11 18:34 +0000 |
| Message-ID | <slrnunelhu.269.naddy@lorvorc.mips.inka.de> |
| In reply to | #8122 |
On 2023-12-10, Jo Engo <yl@icite.fr> wrote: > # attention, il y a bien un saut de ligne entre les quotes > IFS=' > ' select item in $(cat $filee) # (*) > > (*) j'étais pas convaincu par > IFS='\n' un avis ? Dans bash: IFS=$'\n' -- Christian "naddy" Weisgerber naddy@mips.inka.de
[toc] | [prev] | [next] | [standalone]
| From | Jo Engo <yl@icite.fr> |
|---|---|
| Date | 2023-12-13 14:38 +0000 |
| Message-ID | <ulcflr$n90$1@rasp.pasdenom.info> |
| In reply to | #8124 |
Le Mon, 11 Dec 2023 18:34:38 -0000 (UTC), Christian Weisgerber a écrit : > Dans bash: > IFS=$'\n' C'est noté, mais on me demande expressément de ne pas utilise IFS. Comment puis-je faire, une idée ? -- On a le droit de dire du mal des femmes; on n'a pas le droit de dire le mal d'une femme. -+- Alexandre Dumas (1802-1870) -+-
[toc] | [prev] | [next] | [standalone]
| From | Christian Weisgerber <naddy@mips.inka.de> |
|---|---|
| Date | 2023-12-13 23:00 +0000 |
| Message-ID | <slrnunkdrj.ga0.naddy@lorvorc.mips.inka.de> |
| In reply to | #8125 |
On 2023-12-13, Jo Engo <yl@icite.fr> wrote:
>
>> Dans bash:
>> IFS=$'\n'
>
> C'est noté, mais on me demande expressément de ne pas utilise IFS. Comment
> puis-je faire, une idée ?
Avec un tableau. On pourrait remplir le tableau avec une boucle :
i=0
while read -r tableau[i]; do
((i++))
done <$filee
Ou plus court avec mapfile :
#!/usr/local/bin/bash
read -p "fichier de menu : " filee
mapfile -t tableau <$filee
select item in "${tableau[@]}"
do
echo $item
done
--
Christian "naddy" Weisgerber naddy@mips.inka.de
[toc] | [prev] | [next] | [standalone]
| From | Jo Engo <yl@icite.fr> |
|---|---|
| Date | 2023-12-14 15:21 +0000 |
| Message-ID | <ulf6gu$r3t$1@rasp.pasdenom.info> |
| In reply to | #8124 |
Le Mon, 11 Dec 2023 18:34:38 -0000 (UTC), Christian Weisgerber a écrit :
>> Dans bash:
>> IFS=$'\n'
Pas le choix, je vais être obligé de venir à ça car :
> mapfile -t tableau <$filee
> select item in "${tableau[@]}"
ne marche pas : j'ai un mot par item et non la phrase souhaitée (qui se
trouvait dns la ligne. Soyons précis je fais exactement :
«
mapfile -t tableau < liste-sauvegarde
select item in ${tableau[@]}
»
avec liste-sauvegarde qui contient eg.
des trucs bizarres
un truc très important
quelques
deux de plus
l'autre
et alors quand je lance mon script select donne :
1) des 3) bizarres 5) truc 7) important 9) deux
11) plus
2) trucs 4) un 6) très 8) quelques 10) de
12) l'autre
Alors que j'attendais :
1) des trucs bizarres 3 quelques
2) un truc très important 4 deux de plus
5) l'autre
--
attend je suis pas un r3b3lz moi
juste un type ss cervo
-+- underfog in GPJ: C'est lamer qui prends l'homme -+-
[toc] | [prev] | [next] | [standalone]
| From | Jo Engo <yl@icite.fr> |
|---|---|
| Date | 2023-12-14 15:43 +0000 |
| Message-ID | <ulf7qd$r3t$2@rasp.pasdenom.info> |
| In reply to | #8127 |
Le Thu, 14 Dec 2023 15:21:02 -0000 (UTC), Jo Engo a écrit : > des trucs bizarres À propose de trucs bizarres, mon select est dans un while, et au deuxième appel j'ai le résultat attendu. -- PETIT BOULOT Grat! Grat! Grat! Grat! Grat! Grat! P : Tu fais quoi, là ? M : De l'argent de poche... Je vends de la farine animale au noir à la FNSEA...
[toc] | [prev] | [next] | [standalone]
| From | Christophe PEREZ <chris@novazur.fr> |
|---|---|
| Date | 2023-12-14 18:51 +0000 |
| Message-ID | <ulfis5$3fo8j$1@news.usenet.ovh> |
| In reply to | #8127 |
Le Thu, 14 Dec 2023 15:21:02 -0000 (UTC), Jo Engo a écrit :
> avec liste-sauvegarde qui contient eg.
>
> des trucs bizarres
> un truc très important
> quelques
> deux de plus
> l'autre
Ah, enfin des détails sur le contexte.
Il aura fallu du temps et des posts inutiles jusque là.
Sans parler du "mais on me demande expressément de ne pas utilise IFS"
C'est qui "on" ? Le prof ?
unset tableau
while read LINE ; do
tableau+=("$LINE")
done < liste-sauvegarde
select item in "${tableau[@]}" ; do
echo $item
done
[toc] | [prev] | [next] | [standalone]
| From | Christian Weisgerber <naddy@mips.inka.de> |
|---|---|
| Date | 2023-12-14 18:38 +0000 |
| Message-ID | <slrnunmitr.19it.naddy@lorvorc.mips.inka.de> |
| In reply to | #8127 |
On 2023-12-14, Jo Engo <yl@icite.fr> wrote:
>> mapfile -t tableau <$filee
>> select item in "${tableau[@]}"
>
> ne marche pas : j'ai un mot par item et non la phrase souhaitée (qui se
> trouvait dns la ligne. Soyons précis je fais exactement :
> «
> mapfile -t tableau < liste-sauvegarde
> select item in ${tableau[@]}
Il faut utiliser "${tableau[@]}" avec les " " pour la substitution
correcte.
--
Christian "naddy" Weisgerber naddy@mips.inka.de
[toc] | [prev] | [next] | [standalone]
| From | Christian Weisgerber <naddy@mips.inka.de> |
|---|---|
| Date | 2023-12-11 18:32 +0000 |
| Message-ID | <slrnunele0.269.naddy@lorvorc.mips.inka.de> |
| In reply to | #8119 |
On 2023-12-09, Jo Engo <yl@icite.fr> wrote: > select toto in $(sed "s/^/\"/;s/$/\"/" menu); do echo $toto; done </> > Qu'est-ce que je n'ai pas compris ? Le shell traite ses opérations dans un ordre particulier. Les guillemets sont traités _avant_ la substitution de commande. -- Christian "naddy" Weisgerber naddy@mips.inka.de
[toc] | [prev] | [standalone]
Back to top | Article view | fr.comp.os.unix
csiph-web