HS: petite question bash et variable en argument d'une commande
9 réponses
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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.
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
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
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'
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
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.
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.
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.
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
> > 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'
> 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
Jérémy Prego
Le 22/03/2021 Í 09:12, Marc Chantreux a écrit :
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.
Merci pour cette affection ! :D
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'
merci beaucoup pour le paramètre -d-1day ça fonctionne parfaitement avec ce que je veux faire. si la variable est initialisé, il prends la veille sinon il prend le jour même.
a+ marc
Jerem
Le 22/03/2021 Í 09:12, Marc Chantreux a écrit :
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.
Merci pour cette affection ! :D
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'
merci beaucoup pour le paramètre
-d-1day ça fonctionne parfaitement avec ce que je veux faire. si la variable est initialisé, il prends la veille sinon il prend le jour même.
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.
Merci pour cette affection ! :D
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'
merci beaucoup pour le paramètre -d-1day ça fonctionne parfaitement avec ce que je veux faire. si la variable est initialisé, il prends la veille sinon il prend le jour même.
a+ marc
Jerem
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
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
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
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
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"
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
(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
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
(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
(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 :
Oui, ce cours est vraiment top je trouve. Je l'avais massivement utilisé Í mes débuts en bash ! Bonne fin de journée l0f4r0
Hello,
25 mars 2021, 09:02 de mc@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 k6dedijon@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 !
(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 :