Vérifier si la durée de la matrice est égal à une variable bash
Je veux vérifier si la longueur d'un bash de la matrice est égal à un bash variable (int) ou pas. Mon code ressemble à ceci:
if [ "${#selected_columns}" -eq "${number_of_columns}" ]; then
echo "They are equal!"
fi
Cela renvoie faux, puisque l'écho de la déclaration est de ne jamais exécuter. Cependant, cela produit 4 pour les deux d'entre eux:
echo "${#selected_columns[@]}"
echo "${number_of_columns}"
Quel est le problème ici? Il a quelque chose à voir avec la chaîne de contre int?
N'êtes-vous pas manquant
Ouais, juste une bête faute de frappe. Merci!
[@]
dans le premier exemple?if [ "${#selected_columns[@]}" -eq "${number_of_columns}" ]; then
Ouais, juste une bête faute de frappe. Merci!
OriginalL'auteur Krøllebølle | 2012-10-27
Vous devez vous connecter pour publier un commentaire.
Dans votre:
${#selected_columns}
est manquant[@]
.Fixe:
Je pense que vous vous sentez fortement sur cette question: alors pourquoi ne pas poster un commentaire en réponse, je vais retirer ma propre réponse si cela vous rend heureux? =)
Nah, vous l'avez déjà fait le sale boulot. Maintenant, il est plus facile de voir ce qui n'allait pas 😉
OriginalL'auteur sampson-chen
Selon la page de manuel de bash:
À l'aide de
${name}
sur l'index des tableaux en résultera à${name[0]}
, alors vous avez la longueur de${name[0]}
, sans compter les éléments de l'ensemble du tableau. Ce n'est donc pas de problème au sujet de la comparaison de chaîne avec entier. Autant que je sache, en comparant "nombre entier en chaîne de caractères" avec "entier affecté par let" n'est jamais un problème dans l'écriture de scripts bash.OriginalL'auteur user3226688