dans un script bash,j'utilise les syntaxes suivantes (au départ de façon
totalement intuitive) :
- [[ -z "N=$(command 2> /dev/null)" ]]
- [[ "N=10" -eq "10" ]]
De façon générale, est-ce que des affectations encapsulées dans des
tests étaient bien régulières et si ca ne pouvait pas soulever de
problème quelconque ?
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
Stephane Chazelas
2007-05-24, 10:04(+02), Lie Algebra:
Bonjour,
dans un script bash,j'utilise les syntaxes suivantes (au départ de façon totalement intuitive) : - [[ -z "N=$(command 2> /dev/null)" ]] - [[ "N" -eq "10" ]]
De façon générale, est-ce que des affectations encapsulées dans des tests étaient bien régulières et si ca ne pouvait pas soulever de problème quelconque ?
[[ ... ]] n'est pas "test" et n'est pas standard.
[[ -z "N=$(command 2> /dev/null)" ]]
ne fait pas d'affectation [[ -z "N=whatever" ]] ne sera jamais true vu que "N=" n'est pas la chaine vide.
[[ "N" -eq "10" ]]
La, il y aura probablement affectation avec bash. N etant une expression arithemetique. Mais, quitte a etre bash specifique, pour les comparaison arithmetiques, il vaut mieux utiliser ((...)): (( (N = 10) == 10 ))
La syntaxe standard pour les tests (dans les scripts sh Unix, je ne vois pas l'interet d'ecrire des scripts bash) est avec la commande "[".
[ "$N" -eq 10 ]
[ "$((N))" -eq 10 ]
est censé etre standard, mais ca n'a ete clarifié par POSIX/Unix que tres recemment, donc certains shells ne le supportent pas (des descendant de ash principalement).
Des regles d'or:
- eviter une syntaxe specifique d'une version specifique d'un shell specifique pour les scripts (a moins que ce ne soient des scripts de customisation de ton shell interactif).
- privilegier lisibilité sur compacticité.
N [ "$N" -eq 10 ]
-- Stéphane
2007-05-24, 10:04(+02), Lie Algebra:
Bonjour,
dans un script bash,j'utilise les syntaxes suivantes (au départ de façon
totalement intuitive) :
- [[ -z "N=$(command 2> /dev/null)" ]]
- [[ "N" -eq "10" ]]
De façon générale, est-ce que des affectations encapsulées dans des
tests étaient bien régulières et si ca ne pouvait pas soulever de
problème quelconque ?
[[ ... ]] n'est pas "test" et n'est pas standard.
[[ -z "N=$(command 2> /dev/null)" ]]
ne fait pas d'affectation [[ -z "N=whatever" ]] ne sera jamais
true vu que "N=" n'est pas la chaine vide.
[[ "N" -eq "10" ]]
La, il y aura probablement affectation avec bash. N etant une
expression arithemetique. Mais, quitte a etre bash specifique,
pour les comparaison arithmetiques, il vaut mieux utiliser
((...)): (( (N = 10) == 10 ))
La syntaxe standard pour les tests (dans les scripts sh Unix, je
ne vois pas l'interet d'ecrire des scripts bash) est avec la
commande "[".
[ "$N" -eq 10 ]
[ "$((N))" -eq 10 ]
est censé etre standard, mais ca n'a ete clarifié par POSIX/Unix
que tres recemment, donc certains shells ne le supportent pas
(des descendant de ash principalement).
Des regles d'or:
- eviter une syntaxe specifique d'une version specifique d'un
shell specifique pour les scripts (a moins que ce ne soient des
scripts de customisation de ton shell interactif).
dans un script bash,j'utilise les syntaxes suivantes (au départ de façon totalement intuitive) : - [[ -z "N=$(command 2> /dev/null)" ]] - [[ "N" -eq "10" ]]
De façon générale, est-ce que des affectations encapsulées dans des tests étaient bien régulières et si ca ne pouvait pas soulever de problème quelconque ?
[[ ... ]] n'est pas "test" et n'est pas standard.
[[ -z "N=$(command 2> /dev/null)" ]]
ne fait pas d'affectation [[ -z "N=whatever" ]] ne sera jamais true vu que "N=" n'est pas la chaine vide.
[[ "N" -eq "10" ]]
La, il y aura probablement affectation avec bash. N etant une expression arithemetique. Mais, quitte a etre bash specifique, pour les comparaison arithmetiques, il vaut mieux utiliser ((...)): (( (N = 10) == 10 ))
La syntaxe standard pour les tests (dans les scripts sh Unix, je ne vois pas l'interet d'ecrire des scripts bash) est avec la commande "[".
[ "$N" -eq 10 ]
[ "$((N))" -eq 10 ]
est censé etre standard, mais ca n'a ete clarifié par POSIX/Unix que tres recemment, donc certains shells ne le supportent pas (des descendant de ash principalement).
Des regles d'or:
- eviter une syntaxe specifique d'une version specifique d'un shell specifique pour les scripts (a moins que ce ne soient des scripts de customisation de ton shell interactif).
- privilegier lisibilité sur compacticité.
N [ "$N" -eq 10 ]
-- Stéphane
Lie Algebra
Stephane Chazelas wrote:
[[ ... ]] n'est pas "test" et n'est pas standard.
Merci pour ces précisions, mais finalement, qu'est [[ ?
Stephane Chazelas wrote:
[[ ... ]] n'est pas "test" et n'est pas standard.
Merci pour ces précisions, mais finalement, qu'est [[ ?
Merci pour ces précisions, mais finalement, qu'est [[ ?
Lie Algebra
Stephane Chazelas wrote:
[[ ... ]] n'est pas "test" et n'est pas standard.
Merci pour ces précisions, et j'avoue que j'utilise presque systématiquement [[, pour des scripts personnels ou la portabilité n'a pas vraimment d'importance, mais par curiosité, qu'est [[ ?
Stephane Chazelas wrote:
[[ ... ]] n'est pas "test" et n'est pas standard.
Merci pour ces précisions, et j'avoue que j'utilise presque
systématiquement [[, pour des scripts personnels ou la portabilité n'a
pas vraimment d'importance, mais par curiosité, qu'est [[ ?
Merci pour ces précisions, et j'avoue que j'utilise presque systématiquement [[, pour des scripts personnels ou la portabilité n'a pas vraimment d'importance, mais par curiosité, qu'est [[ ?