Je travaille actuellement sur le nettoyage de certains scripts shell. Tout en faisant cela, je suis tombé sur quelque chose qui ressemble à ceci:Comprendre l'indirection
if [ ${#VARA} -eq 0 ] || [ ${#$VARB} -eq 0 ] || [ ${$VARC} -eq 0 ]; then
...
fi
Comme vous pouvez le voir, il y a trois différents types de choses qui se passent ici avec des variables: ${#V}
, ${#$V}
et ${$V}
. J'aimerais une explication de chacun de ces s'il vous plaît. (Plus Shellcheck is complaining à propos du dernier.)
Mon bash se plaint déjà de la 2ème. Quelle coque est-ce? Toute chance que l'auteur original ne savait pas ce qu'il faisait et juste essayé tous les trois. Le premier est la longueur de chaîne de la valeur VARAs. – Harald
@Harald il y a une très bonne chance de cela. Et oui, c'est Bash. La ligne en question est dans un très grand script. Je ne peux pas promettre qu'il est même utilisé, mais je pensais juste que c'était intéressant puisque je n'avais jamais vu la syntaxe auparavant. –
Pas étonnant que tu ne l'aies pas vu, si ça ne marche pas (sauf le 1er) :-) Ou peut-être que ça fonctionnait dans les anciennes versions de bash. – Harald