J'ai actuellement quelque chose de la formeComment obtenir la longueur d'une variable dans bash?
abc=`find ~/$folder .. etc
J'aimerais savoir comment obtenir le nombre d'éléments dans abc:
abc_length = ?
Merci
J'ai actuellement quelque chose de la formeComment obtenir la longueur d'une variable dans bash?
abc=`find ~/$folder .. etc
J'aimerais savoir comment obtenir le nombre d'éléments dans abc:
abc_length = ?
Merci
utiliser le tableau:
abc=($(find ...))
abc_length=${#abc[@]}
Retrieve résultat n-ième, dire 10:
echo ${abc[9]}
Ou énumérer tous:
for dir_name in "${abc[@]}"; do
echo $dir_name
done
Mise à jour: ne asker semblent vouloir traiter dans le script, donc:
abc_length=$(find ... | wc -l)
Vous pouvez réduire le nombre de 1 parce que le premier résultat est ~/$folder
:
abc_length=$(($(find ... | wc -l) - 1))
Je ne suis pas sûr de ce que vous voulez dire par "articles", donc je vais supposer "entrées de répertoire". En supposant que vous n'avez pas de fichiers avec des nouvelles lignes dans leur nom, echo "$abc" | wc -l
fera l'affaire.
Si vous souhaitez compter le nombre de caractères, utilisez à la place wc -c
.
L'echo "$ abc" | wc - l fonctionne bien. Mais comment obtenir cette valeur à une variable? –
juste 'abc_length = $ (trouver ... | wc -l)' ferait ce que vous voulez. – livibetter
J'ai actuellement: results = 'find ~/$ dossier -name" $ fichier @ * "-type f'. Comment puis-je avoir un results_count qui au lieu d'appeler à nouveau find, utilisera seulement les données qui sont déjà dans la variable "results"? Merci –
Lorsque vous essayez de faire une boucle sur abc, le premier résultat apparaîtra! \t abc = ($ (find ~/$ dossier -name "$ file @ *" -type f)), et la boucle: pour j dans "$ abc". Y a-t-il quelque chose qui ne va pas? –
Utilisez 'pour j dans $ {abc [@]}'. – livibetter
Ne pas oublier les guillemets: 'pour j dans" $ {abc [@]} "'. –