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
Reply to: