Re: HS: petite question bash et variable en argument d'une commande
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
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
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
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
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
> > > 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
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
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
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
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