Re: HS: petite question bash et variable en argument d'une commande

2021-04-04 Par sujet l0f4r0
Hello,

25 mars 2021, 09:02 de m...@unistra.fr:

>> Comme indiqué de manière très détaillée sur 
>> https://mywiki.wooledge.org/BashFAQ/050
>>
> (désolé c'est en anglais), stocker des commandes dans des variables est très 
> hasardeux.
>
> je ne lit plus jamais qu'en diagonale toute litterature spécifique à
> bash mais oui: les choses sont compliquées voir impossibles dans une
> chaine. par contre ...
>
>> La façon la moins risquée est de passer par un tableau (d'ailleurs
>> t'avais évoqué l'idée dans ton message initial).
>>
>
> non!
> [...]
> ensuite: la façon la moins risquée s'appelle une fonction et c'est même
> fait pour. ca permet de surcroit de profiter
>
> * de la localisation des variables dans le contexte de la fonction.
> * du paramétrage d'une valeur par défaut
>
Je parlais du cas où l'on souhaiterait absolument passer par une variable. Vaut 
mieux le tableau que la chaîne.
Nous sommes en phase sur la fonction.

> autre manière de faire pour éviter le quoting hell: xargs
> https://pubs.opengroup.org/onlinepubs/9699919799/utilities/xargs.html
>
> date=tomorrow
>
> # des trucs ...
>
> <<. xargs -d'\n' date
> -d ${date:--1day}
> +%A %d %B
> .
>
> xargs prend aussi un fichier, du coup tu peux composer ta commande
> petit à petit
>
> exec 9>/tmp/mydate
> >&9 echo "-d ${date:--1day}"
> >&9 echo '+%A %d %B'
> exec 9>&-
> xargs -a /tmp/mydate -d'\n' date
>
Merci, ça m'a fait réviser xargs et les redirections/descripteurs de fichiers 
non standards ;)

25 mars 2021, 19:14 de k6dedi...@free.fr:

> Pour info : tutorial bash
> http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/
>
Oui, ce cours est vraiment top je trouve.
Je l'avais massivement utilisé à mes débuts en bash !

Bonne fin de journée
l0f4r0



Re : Re: HS: petite question bash et variable en argument d'une commande

2021-03-25 Par sujet k6dedijon
Bonjour,
Pour info : tutorial bash
http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/

Cassis



- Mail d'origine -
De: Marc Chantreux 
À: l0f...@tuta.io
Cc: Debian User French 
Envoyé: Thu, 25 Mar 2021 09:02:24 +0100 (CET)
Objet: Re: HS: petite question bash et variable en argument d'une commande

salut,

> Comme indiqué de manière très détaillée sur 
> https://mywiki.wooledge.org/BashFAQ/050
(désolé c'est en anglais), stocker des commandes dans des variables est très 
hasardeux.

je ne lit plus jamais qu'en diagonale toute litterature spécifique à
bash mais oui: les choses sont compliquées voir impossibles dans une
chaine. par contre ...

> La façon la moins risquée est de passer par un tableau (d'ailleurs
> t'avais évoqué l'idée dans ton message initial).

non! déjà: le seul tableau que posix connaisse est $@ donc

date_args=( --date="1 days ago" )
date "${date_args[@]}" "+%A %d %B"

nécessite au moins mksh pour être lu. et si tu utilises plus gros: je te
conseille de passer tout de suite du coté de zsh mais rien ne justifie
de sortir un veau comme bash dans le cas présent.

ensuite: la façon la moins risquée s'appelle une fonction et c'est même
fait pour. ca permet de surcroit de profiter

  * de la localisation des variables dans le contexte de la fonction.
  * du paramétrage d'une valeur par défaut

exemple:

mydate () date -d"${1:--1day}" '+%A %d %B'
mydate
mydate tomorrow

me donne

mercredi 24 mars
vendredi 26 mars

autre manière de faire pour éviter le quoting hell: xargs
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/xargs.html

date=tomorrow

# des trucs ...

<<. xargs -d'\n' date
-d ${date:--1day}
+%A %d %B
.

xargs prend aussi un fichier, du coup tu peux composer ta commande
petit à petit

exec 9>/tmp/mydate
>&9 echo "-d ${date:--1day}"
>&9 echo '+%A %d %B'
exec 9>&-
xargs -a /tmp/mydate -d'\n' date

hth
bonne journée
marc




Re: HS: petite question bash et variable en argument d'une commande

2021-03-25 Par sujet Marc Chantreux
salut,

> Comme indiqué de manière très détaillée sur 
> https://mywiki.wooledge.org/BashFAQ/050
(désolé c'est en anglais), stocker des commandes dans des variables est très 
hasardeux.

je ne lit plus jamais qu'en diagonale toute litterature spécifique à
bash mais oui: les choses sont compliquées voir impossibles dans une
chaine. par contre ...

> La façon la moins risquée est de passer par un tableau (d'ailleurs
> t'avais évoqué l'idée dans ton message initial).

non! déjà: le seul tableau que posix connaisse est $@ donc

date_args=( --date="1 days ago" )
date "${date_args[@]}" "+%A %d %B"

nécessite au moins mksh pour être lu. et si tu utilises plus gros: je te
conseille de passer tout de suite du coté de zsh mais rien ne justifie
de sortir un veau comme bash dans le cas présent.

ensuite: la façon la moins risquée s'appelle une fonction et c'est même
fait pour. ca permet de surcroit de profiter

  * de la localisation des variables dans le contexte de la fonction.
  * du paramétrage d'une valeur par défaut

exemple:

mydate () date -d"${1:--1day}" '+%A %d %B'
mydate
mydate tomorrow

me donne

mercredi 24 mars
vendredi 26 mars

autre manière de faire pour éviter le quoting hell: xargs
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/xargs.html

date=tomorrow

# des trucs ...

<<. xargs -d'\n' date
-d ${date:--1day}
+%A %d %B
.

xargs prend aussi un fichier, du coup tu peux composer ta commande
petit à petit

exec 9>/tmp/mydate
>&9 echo "-d ${date:--1day}"
>&9 echo '+%A %d %B'
exec 9>&-
xargs -a /tmp/mydate -d'\n' date

hth
bonne journée
marc



Re: HS: petite question bash et variable en argument d'une commande

2021-03-24 Par sujet l0f4r0
Bonjour,

Comme indiqué de manière très détaillée sur 
https://mywiki.wooledge.org/BashFAQ/050 (désolé c'est en anglais), stocker des 
commandes dans des variables est très hasardeux.
La façon la moins risquée est de passer par un tableau (d'ailleurs t'avais 
évoqué l'idée dans ton message initial).

Pour ton cas, ça donne donc :

date_args=( --date="1 days ago" )
date "${date_args[@]}" "+%A %d %B"

Bien cordialement,
l0f4r0



Re: HS: petite question bash et variable en argument d'une commande

2021-03-22 Par sujet Fabrice Bauzac-Stehly
Attention aux quotes:

#!/bin/bash
day_date="--date=1 day ago"
date "${day_date}" "+%A %d %B"

-- 
Fabrice Bauzac-Stehly
PGP 01EEACF8244E9C14B551C5256ADA5F189BD322B6
old PGP 015AE9B25DCB0511D200A75DE5674DEA514C891D



Re: HS: petite question bash et variable en argument d'une commande

2021-03-22 Par sujet Marc Chantreux
> > > day_date="--date='1 days ago'"
> > C'est day_date=`date --date='1 day ago'
> Manque la backquote, désolé

non mais même:

* je pige pas l'interet de préparer un argument de date en évaluant
  une sortie de date
* en plus sous la forme ou tu l'écris c'est fragile parce que

# LANG= date -d-1day
Sun Mar 21 09:24:24 CET 2021
# date -d'Sun Mar 21 09:24:24 CET 2021'
dim. 21 mars 2021 09:24:24 CET
# date -d'dim. 21 mars 2021 09:24:24 CET'
date: date « dim. 21 mars 2021 09:24:24 CET » incorrecte

pour moi l'intention était de préparer l'argument

--date=1\ day\ ago

qui peut se noter comme ceci

--date=1\ day\ ago
--date='1 day ago'
'--date=1 day ago'

sauf que si je met des quotes dans les quotes

"--date='1 day ago'"

j'obtiens

--date=\'1\ day\ ago\'

belle journée
marc



Re: HS: petite question bash et variable en argument d'une commande

2021-03-22 Par sujet NoSpam



Le 22/03/2021 à 09:14, NoSpam a écrit :

Bonjour


Le 22/03/2021 à 07:46, Jérémy Prego a écrit :

Bonjour,

Quelque chose que je pensais simple s'avère plus compliqué que prévu. Je
souhaite utiliser un argument de la commande date que je positionne en
variable. Cela me permet de pouvoir initialiser la variable ou non selon
le cas. sauf que ça fonctionne pas vraiment.

extrait de mon test:
#!/bin/bash
day_date="--date='1 days ago'"

C'est day_date=`date --date='1 day ago'


Manque la backquote, désolé

day_date=`date --date='1 day ago'`



date ${day_date} "+%A %d %B"

En gros, quand la variable est initialisé, ça m'affiche la date d'hier
au lieu de la date d'aujourd'hui. sauf que  ça ne fonctionne pas
vraiment, j'ai un peu tout essayé des exemples pris sur stackoverflow
avec ma variable sous forme de tableau, en testant avec eval, mais rien
à faire.






Re: HS: petite question bash et variable en argument d'une commande

2021-03-22 Par sujet NoSpam

Bonjour


Le 22/03/2021 à 07:46, Jérémy Prego a écrit :

Bonjour,

Quelque chose que je pensais simple s'avère plus compliqué que prévu. Je
souhaite utiliser un argument de la commande date que je positionne en
variable. Cela me permet de pouvoir initialiser la variable ou non selon
le cas. sauf que ça fonctionne pas vraiment.

extrait de mon test:
#!/bin/bash
day_date="--date='1 days ago'"

C'est day_date=`date --date='1 day ago'


date ${day_date} "+%A %d %B"

En gros, quand la variable est initialisé, ça m'affiche la date d'hier
au lieu de la date d'aujourd'hui. sauf que  ça ne fonctionne pas
vraiment, j'ai un peu tout essayé des exemples pris sur stackoverflow
avec ma variable sous forme de tableau, en testant avec eval, mais rien
à faire.


--

Daniel



Re: HS: petite question bash et variable en argument d'une commande

2021-03-22 Par sujet Marc Chantreux
hello,

> extrait de mon test:
> #!/bin/bash

> au lieu de la date d'aujourd'hui. sauf que  ça ne fonctionne pas
> vraiment, j'ai un peu tout essayé des exemples pris sur stackoverflow

> day_date="--date='1 days ago'"

c'est parce que tu quote quote, ma poule.

day_date='--date=1 days ago'
date "$day_date" '+%A %d %B'

par contre naturellement j'aurais plus noté

date -d-1day '+%A %d %B'

a+
marc



HS: petite question bash et variable en argument d'une commande

2021-03-22 Par sujet Jérémy Prego
Bonjour,

Quelque chose que je pensais simple s'avère plus compliqué que prévu. Je
souhaite utiliser un argument de la commande date que je positionne en
variable. Cela me permet de pouvoir initialiser la variable ou non selon
le cas. sauf que ça fonctionne pas vraiment.

extrait de mon test:
#!/bin/bash
day_date="--date='1 days ago'"

date ${day_date} "+%A %d %B"

En gros, quand la variable est initialisé, ça m'affiche la date d'hier
au lieu de la date d'aujourd'hui. sauf que  ça ne fonctionne pas
vraiment, j'ai un peu tout essayé des exemples pris sur stackoverflow
avec ma variable sous forme de tableau, en testant avec eval, mais rien
à faire.

merci à vous pour le coup de main.

Jerem