Que fait l'opérateur '#' devant une variable dans l'expansion variable?

ci-dessous est le code que j'ai exécuté dans le terminal

[root@idm ~]# x="$(date +%d%m%y)" [root@idm ~]# echo $x 270217 [root@idm ~]# echo ${#x} 6 

Quelqu'un peut-il m'aider à comprendre pourquoi la sortie est de 6 ? Qu'est-ce que # fait essentiellement à la variable?

Il s'agit d'une extension de paramètre qui renvoie la longueur du paramètre, le nombre d'éléments dans un tableau ou le nombre de parameters de position.

Veuillez lire le manuel de votre shell. Ce qui suit est tiré du manuel de bash :

${#parameter}

La longueur en caractères de la valeur du parameter est substituée . Si le parameter est * ou @ , la valeur substituée est le nombre de parameters de position. Si parameter est un nom de tableau indexé par * ou @ , la valeur substituée est le nombre d'éléments du tableau. Si parameter est un nom de tableau indexé par un nombre négatif, ce nombre est interprété comme relatif à un index supérieur au paramètre maximum, de sorte que les indices négatifs countnt à partir de la fin du tableau et un index de -1 reference le dernier élément.


Et aussi, s'il vous plaît ne pas prendre l'habitude de travailler dans une coquille de racine interactive. C'est dangereux et imprudent au mieux. Utilisez sudo avec parcimonie et uniquement dans les situations nécessitant des privilèges élevés. Jouer avec bash est quelque chose que vous pouvez certainement faire en tant qu'user ordinaire non root.

Au cours des dernières années, je n'ai utilisé qu'un shell racine interactif pour append manuellement un seul user. C'est un travail de 2 minutes et je n'ai plus jamais besoin de voir un prompt sur cette machine.

L'opérateur # renvoie la longueur d'une variable. Dans votre cas, la variable x longueur est de six.

S'il vous plaît jeter un oeil à la substitution de parameters pour plus d'informations.