Pourquoi la ligne de commande
« shred --remove --verbose --zero !(*.gpg) »
fait bien ce qu'elle doit,
mais que ça coince quand elle se trouve dans
un script bash ? y a-t-il une parade ?
Le message d'erreur : «
erreur de syntaxe près du symbole inattendu « ( »
/home/didier/bin/gpgc: ligne 9: ` shred --remove --verbose --zero
!(*.gpg)'
»
Librement,
Didier.
--
ma céramique : http://didierdescamps.fr
autres bouts de vie : http://didierdescamps.free.fr
--
Bonjour, Le 10/06/2021 Í 07:08, Olivier Miakinen a écrit dans le message <s9s6op$1qon$Â :
Si tu en es Í imbriquer plusieurs niveaux, je pense qu'il y a un autre problème dans ton code. Que ce soit bien clair, je ne défends pas les «Â `…` », je réagis juste au fait que l'on pense qu'ils ne s'imbriquent pas ; ce qui est faux.
Ok, je comprends ton point de vue. Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible que n'importe quel équivalent Í base de backquotes. Et je ne pense pas que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut : % mkdir '/tmp/z z z' && cd '/tmp/z z z' % basename $(pwd) basename: extra operand ‘z’ Try 'basename --help' for more information. % basename $PWD z z z Je n'ai pas tout suivi mais pourquoi ne pas faire un truc comme ça : if pwd | greq -q '/z$'; then … fi -- Benoit Izac
Bonjour,
Le 10/06/2021 Í 07:08, Olivier Miakinen a écrit dans le message
<s9s6op$1qon$1@cabale.usenet-fr.net>Â :
Si tu en es Í imbriquer plusieurs niveaux, je pense qu'il y a un autre
problème dans ton code.
Que ce soit bien clair, je ne défends pas les «Â `…`Â », je réagis juste
au fait que l'on pense qu'ils ne s'imbriquent pas ; ce qui est faux.
Ok, je comprends ton point de vue.
Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible
que n'importe quel équivalent Í base de backquotes. Et je ne pense pas
que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut :
% mkdir '/tmp/z z z' && cd '/tmp/z z z'
% basename $(pwd)
basename: extra operand ‘z’
Try 'basename --help' for more information.
% basename $PWD
z z z
Je n'ai pas tout suivi mais pourquoi ne pas faire un truc comme ça :
Bonjour, Le 10/06/2021 Í 07:08, Olivier Miakinen a écrit dans le message <s9s6op$1qon$Â :
Si tu en es Í imbriquer plusieurs niveaux, je pense qu'il y a un autre problème dans ton code. Que ce soit bien clair, je ne défends pas les «Â `…` », je réagis juste au fait que l'on pense qu'ils ne s'imbriquent pas ; ce qui est faux.
Ok, je comprends ton point de vue. Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible que n'importe quel équivalent Í base de backquotes. Et je ne pense pas que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut : % mkdir '/tmp/z z z' && cd '/tmp/z z z' % basename $(pwd) basename: extra operand ‘z’ Try 'basename --help' for more information. % basename $PWD z z z Je n'ai pas tout suivi mais pourquoi ne pas faire un truc comme ça : if pwd | greq -q '/z$'; then … fi -- Benoit Izac
pehache
Le 10/06/2021 Í 21:40, Benoit Izac a écrit :
Bonjour, Le 10/06/2021 Í 07:08, Olivier Miakinen a écrit dans le message <s9s6op$1qon$Â :
Si tu en es Í imbriquer plusieurs niveaux, je pense qu'il y a un autre problème dans ton code. Que ce soit bien clair, je ne défends pas les «Â `…` », je réagis juste au fait que l'on pense qu'ils ne s'imbriquent pas ; ce qui est faux.
Ok, je comprends ton point de vue. Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible que n'importe quel équivalent Í base de backquotes. Et je ne pense pas que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut : % mkdir '/tmp/z z z' && cd '/tmp/z z z' % basename $(pwd) basename: extra operand ‘z’ Try 'basename --help' for more information.
Ce que tu mets en défaut ici n'est pas la syntaxe $(...) mais la gestion des espaces. -- "...sois ouvert aux idées des autres pour peu qu'elles aillent dans le même sens que les tiennes.", ST sur fr.bio.medecine
Le 10/06/2021 Í 21:40, Benoit Izac a écrit :
Bonjour,
Le 10/06/2021 Í 07:08, Olivier Miakinen a écrit dans le message
<s9s6op$1qon$1@cabale.usenet-fr.net>Â :
Si tu en es Í imbriquer plusieurs niveaux, je pense qu'il y a un autre
problème dans ton code.
Que ce soit bien clair, je ne défends pas les «Â `…`Â », je réagis juste
au fait que l'on pense qu'ils ne s'imbriquent pas ; ce qui est faux.
Ok, je comprends ton point de vue.
Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible
que n'importe quel équivalent Í base de backquotes. Et je ne pense pas
que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut :
% mkdir '/tmp/z z z' && cd '/tmp/z z z'
% basename $(pwd)
basename: extra operand ‘z’
Try 'basename --help' for more information.
Ce que tu mets en défaut ici n'est pas la syntaxe $(...) mais la gestion
des espaces.
--
"...sois ouvert aux idées des autres pour peu qu'elles aillent dans le
même sens que les tiennes.", ST sur fr.bio.medecine
Bonjour, Le 10/06/2021 Í 07:08, Olivier Miakinen a écrit dans le message <s9s6op$1qon$Â :
Si tu en es Í imbriquer plusieurs niveaux, je pense qu'il y a un autre problème dans ton code. Que ce soit bien clair, je ne défends pas les «Â `…` », je réagis juste au fait que l'on pense qu'ils ne s'imbriquent pas ; ce qui est faux.
Ok, je comprends ton point de vue. Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible que n'importe quel équivalent Í base de backquotes. Et je ne pense pas que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut : % mkdir '/tmp/z z z' && cd '/tmp/z z z' % basename $(pwd) basename: extra operand ‘z’ Try 'basename --help' for more information.
Ce que tu mets en défaut ici n'est pas la syntaxe $(...) mais la gestion des espaces. -- "...sois ouvert aux idées des autres pour peu qu'elles aillent dans le même sens que les tiennes.", ST sur fr.bio.medecine
Olivier Miakinen
Le 10/06/2021 21:40, Benoit Izac a écrit :
Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible que n'importe quel équivalent Í base de backquotes. Et je ne pense pas que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut : % mkdir '/tmp/z z z' && cd '/tmp/z z z' % basename $(pwd) basename: extra operand ‘z’ Try 'basename --help' for more information.
Ok. Note qu'en l'occurrence ce n'est pas mieux avec les backquotes. Mais c'est vrai qu'on peut éviter ça en deux lignes au lieu d'une, en passant par une variable, et avec des guillemets : % ou=$(pwd) % basename "$ou" z z z On peut aussi l'éviter en ne mettant pas d'espaces dans ses noms de répertoires, mais ça c'est encore une autre question.
% basename $PWD z z z
??? % basename $PWD basename: opérande supplémentaire «z» Saisissez «Â basename --help » pour plus d'informations. Mais en effet (je ne connaissais pas $PWD) : % basename "$PWD" z z z
Je n'ai pas tout suivi mais pourquoi ne pas faire un truc comme ça : if pwd | grep -q '/z$'; then # (greq changé en grep) … fi
Après avoir tout suivi, ce serait plutÍ´t : if pwd | grep -q -E '/.z(/|$)'; then … fi ... mais c'est un peu moins lisible. -- Olivier Miakinen
Le 10/06/2021 21:40, Benoit Izac a écrit :
Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible
que n'importe quel équivalent Í base de backquotes. Et je ne pense pas
que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut :
% mkdir '/tmp/z z z' && cd '/tmp/z z z'
% basename $(pwd)
basename: extra operand ‘z’
Try 'basename --help' for more information.
Ok. Note qu'en l'occurrence ce n'est pas mieux avec les backquotes.
Mais c'est vrai qu'on peut éviter ça en deux lignes au lieu d'une, en passant
par une variable, et avec des guillemets :
% ou=$(pwd)
% basename "$ou"
z z z
On peut aussi l'éviter en ne mettant pas d'espaces dans ses noms de répertoires,
mais ça c'est encore une autre question.
% basename $PWD
z z z
???
% basename $PWD
basename: opérande supplémentaire «z»
Saisissez «Â basename --help » pour plus d'informations.
Mais en effet (je ne connaissais pas $PWD) :
% basename "$PWD"
z z z
Je n'ai pas tout suivi mais pourquoi ne pas faire un truc comme ça :
if pwd | grep -q '/z$'; then # (greq changé en grep)
…
fi
Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible que n'importe quel équivalent Í base de backquotes. Et je ne pense pas que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut : % mkdir '/tmp/z z z' && cd '/tmp/z z z' % basename $(pwd) basename: extra operand ‘z’ Try 'basename --help' for more information.
Ok. Note qu'en l'occurrence ce n'est pas mieux avec les backquotes. Mais c'est vrai qu'on peut éviter ça en deux lignes au lieu d'une, en passant par une variable, et avec des guillemets : % ou=$(pwd) % basename "$ou" z z z On peut aussi l'éviter en ne mettant pas d'espaces dans ses noms de répertoires, mais ça c'est encore une autre question.
% basename $PWD z z z
??? % basename $PWD basename: opérande supplémentaire «z» Saisissez «Â basename --help » pour plus d'informations. Mais en effet (je ne connaissais pas $PWD) : % basename "$PWD" z z z
Je n'ai pas tout suivi mais pourquoi ne pas faire un truc comme ça : if pwd | grep -q '/z$'; then # (greq changé en grep) … fi
Après avoir tout suivi, ce serait plutÍ´t : if pwd | grep -q -E '/.z(/|$)'; then … fi ... mais c'est un peu moins lisible. -- Olivier Miakinen
Benoit Izac
Bonjour, Le 10/06/2021 Í 23:20, Olivier Miakinen a écrit dans le message <s9tvm7$5s5$Â :
Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible que n'importe quel équivalent Í base de backquotes. Et je ne pense pas que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut : % mkdir '/tmp/z z z' && cd '/tmp/z z z' % basename $(pwd) basename: extra operand ‘z’ Try 'basename --help' for more information.
Ok. Note qu'en l'occurrence ce n'est pas mieux avec les backquotes.
On parlait de problème de code avec "$(basename $(pwd))".
Mais c'est vrai qu'on peut éviter ça en deux lignes au lieu d'une, en passant par une variable, et avec des guillemets : % ou=$(pwd) % basename "$ou" z z z
Donc on supprime l'imbrication. Mais le problème persiste car si tu quotes "$ou" (ou "$(pwd)"), il faudra potentiellement aussi que tu quotes le retour de basename.
On peut aussi l'éviter en ne mettant pas d'espaces dans ses noms de répertoires, mais ça c'est encore une autre question.
On est d'accord mais on n'est pas toujours Í l'origine de la structure.
[…] if pwd | grep -q -E '/.z(/|$)'; then … fi ... mais c'est un peu moins lisible.
Très subjectif comme remarque. En tout cas c'est plus portable que le code précédent qui utilise une syntaxe spécifique Í bash. -- Benoit Izac
Bonjour,
Le 10/06/2021 Í 23:20, Olivier Miakinen a écrit dans le message
<s9tvm7$5s5$1@cabale.usenet-fr.net>Â :
Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus
lisible que n'importe quel équivalent Í base de backquotes. Et je ne
pense pas que l'on puisse dire qu'il y ait « un problème dans ce
code »;.
C'est pourtant aisé de le mettre en défaut :
% mkdir '/tmp/z z z' && cd '/tmp/z z z'
% basename $(pwd)
basename: extra operand ‘z’
Try 'basename --help' for more information.
Ok. Note qu'en l'occurrence ce n'est pas mieux avec les backquotes.
On parlait de problème de code avec "$(basename $(pwd))".
Mais c'est vrai qu'on peut éviter ça en deux lignes au lieu d'une, en
passant par une variable, et avec des guillemets :
% ou=$(pwd)
% basename "$ou"
z z z
Donc on supprime l'imbrication. Mais le problème persiste car si tu
quotes "$ou" (ou "$(pwd)"), il faudra potentiellement aussi que tu
quotes le retour de basename.
On peut aussi l'éviter en ne mettant pas d'espaces dans ses noms de
répertoires, mais ça c'est encore une autre question.
On est d'accord mais on n'est pas toujours Í l'origine de la structure.
[…]
if pwd | grep -q -E '/.z(/|$)'; then
…
fi
... mais c'est un peu moins lisible.
Très subjectif comme remarque. En tout cas c'est plus portable que le code
précédent qui utilise une syntaxe spécifique Í bash.
Bonjour, Le 10/06/2021 Í 23:20, Olivier Miakinen a écrit dans le message <s9tvm7$5s5$Â :
Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible que n'importe quel équivalent Í base de backquotes. Et je ne pense pas que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut : % mkdir '/tmp/z z z' && cd '/tmp/z z z' % basename $(pwd) basename: extra operand ‘z’ Try 'basename --help' for more information.
Ok. Note qu'en l'occurrence ce n'est pas mieux avec les backquotes.
On parlait de problème de code avec "$(basename $(pwd))".
Mais c'est vrai qu'on peut éviter ça en deux lignes au lieu d'une, en passant par une variable, et avec des guillemets : % ou=$(pwd) % basename "$ou" z z z
Donc on supprime l'imbrication. Mais le problème persiste car si tu quotes "$ou" (ou "$(pwd)"), il faudra potentiellement aussi que tu quotes le retour de basename.
On peut aussi l'éviter en ne mettant pas d'espaces dans ses noms de répertoires, mais ça c'est encore une autre question.
On est d'accord mais on n'est pas toujours Í l'origine de la structure.
[…] if pwd | grep -q -E '/.z(/|$)'; then … fi ... mais c'est un peu moins lisible.
Très subjectif comme remarque. En tout cas c'est plus portable que le code précédent qui utilise une syntaxe spécifique Í bash. -- Benoit Izac
Benoit Izac
Bonjour, Le 10/06/2021 Í 23:19, pehache a écrit dans le message  :
Si tu en es Í imbriquer plusieurs niveaux, je pense qu'il y a un autre problème dans ton code. Que ce soit bien clair, je ne défends pas les «Â `…` », je réagis juste au fait que l'on pense qu'ils ne s'imbriquent pas ; ce qui est faux.
Ok, je comprends ton point de vue. Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible que n'importe quel équivalent Í base de backquotes. Et je ne pense pas que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut : % mkdir '/tmp/z z z' && cd '/tmp/z z z' % basename $(pwd) basename: extra operand ‘z’ Try 'basename --help' for more information.
Ce que tu mets en défaut ici n'est pas la syntaxe $(...) mais la gestion des espaces.
Pour gérer correctement les espaces, il faut mettre entre double-quotes mais, dès que tu imbriques, cela devient ingérable. -- Benoit Izac
Bonjour,
Le 10/06/2021 Í 23:19, pehache a écrit dans le message
<iifdu6Ft3o8U1@mid.individual.net>Â :
Si tu en es Í imbriquer plusieurs niveaux, je pense qu'il y a un autre
problème dans ton code.
Que ce soit bien clair, je ne défends pas les «Â `…`Â », je réagis juste
au fait que l'on pense qu'ils ne s'imbriquent pas ; ce qui est faux.
Ok, je comprends ton point de vue.
Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible
que n'importe quel équivalent Í base de backquotes. Et je ne pense pas
que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut :
% mkdir '/tmp/z z z' && cd '/tmp/z z z'
% basename $(pwd)
basename: extra operand ‘z’
Try 'basename --help' for more information.
Ce que tu mets en défaut ici n'est pas la syntaxe $(...) mais la
gestion des espaces.
Pour gérer correctement les espaces, il faut mettre entre double-quotes
mais, dès que tu imbriques, cela devient ingérable.
Bonjour, Le 10/06/2021 Í 23:19, pehache a écrit dans le message  :
Si tu en es Í imbriquer plusieurs niveaux, je pense qu'il y a un autre problème dans ton code. Que ce soit bien clair, je ne défends pas les «Â `…` », je réagis juste au fait que l'on pense qu'ils ne s'imbriquent pas ; ce qui est faux.
Ok, je comprends ton point de vue. Il n'empêche qu'une syntaxe comme "$(basename $(pwd))" reste plus lisible que n'importe quel équivalent Í base de backquotes. Et je ne pense pas que l'on puisse dire qu'il y ait « un problème dans ce code »;.
C'est pourtant aisé de le mettre en défaut : % mkdir '/tmp/z z z' && cd '/tmp/z z z' % basename $(pwd) basename: extra operand ‘z’ Try 'basename --help' for more information.
Ce que tu mets en défaut ici n'est pas la syntaxe $(...) mais la gestion des espaces.
Pour gérer correctement les espaces, il faut mettre entre double-quotes mais, dès que tu imbriques, cela devient ingérable. -- Benoit Izac
Benoit Izac
Bonjour, Le 10/06/2021 Í 23:20, Olivier Miakinen a écrit dans le message <s9tvm7$5s5$Â :
if pwd | grep -q -E '/.z(/|$)'; then
if pwd | grep -q -E '/.z(/|$)'; then -- Benoit Izac
Bonjour,
Le 10/06/2021 Í 23:20, Olivier Miakinen a écrit dans le message
<s9tvm7$5s5$1@cabale.usenet-fr.net>Â :
Bonjour, Le 10/06/2021 Í 23:20, Olivier Miakinen a écrit dans le message <s9tvm7$5s5$Â :
if pwd | grep -q -E '/.z(/|$)'; then
if pwd | grep -q -E '/.z(/|$)'; then
[OUI] -- Olivier Miakinen
pehache
Le 11/06/2021 Í 06:41, Benoit Izac a écrit :
C'est pourtant aisé de le mettre en défaut : % mkdir '/tmp/z z z' && cd '/tmp/z z z' % basename $(pwd) basename: extra operand ‘z’ Try 'basename --help' for more information.
Ce que tu mets en défaut ici n'est pas la syntaxe $(...) mais la gestion des espaces.
Pour gérer correctement les espaces, il faut mettre entre double-quotes mais, dès que tu imbriques, cela devient ingérable.
Dès que tu imbriques quoi ? Les niveaux de $(...) ? Les () ont précédences sur les "" il me semble, ce n'est donc pas si ingérable que ça. $ echo "$(basename "$(pwd)")" z z z -- "...sois ouvert aux idées des autres pour peu qu'elles aillent dans le même sens que les tiennes.", ST sur fr.bio.medecine
Le 11/06/2021 Í 06:41, Benoit Izac a écrit :
C'est pourtant aisé de le mettre en défaut :
% mkdir '/tmp/z z z' && cd '/tmp/z z z'
% basename $(pwd)
basename: extra operand ‘z’
Try 'basename --help' for more information.
Ce que tu mets en défaut ici n'est pas la syntaxe $(...) mais la
gestion des espaces.
Pour gérer correctement les espaces, il faut mettre entre double-quotes
mais, dès que tu imbriques, cela devient ingérable.
Dès que tu imbriques quoi ? Les niveaux de $(...) ?
Les () ont précédences sur les "" il me semble, ce n'est donc pas si
ingérable que ça.
$ echo "$(basename "$(pwd)")"
z z z
--
"...sois ouvert aux idées des autres pour peu qu'elles aillent dans le
même sens que les tiennes.", ST sur fr.bio.medecine
C'est pourtant aisé de le mettre en défaut : % mkdir '/tmp/z z z' && cd '/tmp/z z z' % basename $(pwd) basename: extra operand ‘z’ Try 'basename --help' for more information.
Ce que tu mets en défaut ici n'est pas la syntaxe $(...) mais la gestion des espaces.
Pour gérer correctement les espaces, il faut mettre entre double-quotes mais, dès que tu imbriques, cela devient ingérable.
Dès que tu imbriques quoi ? Les niveaux de $(...) ? Les () ont précédences sur les "" il me semble, ce n'est donc pas si ingérable que ça. $ echo "$(basename "$(pwd)")" z z z -- "...sois ouvert aux idées des autres pour peu qu'elles aillent dans le même sens que les tiennes.", ST sur fr.bio.medecine