[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: