web-dev-qa-db-fra.com

Comment stocker la longueur d'un tableau dans une variable en langage de script bash

J'ai stocké des informations sur le système dans un tableau .. et j'ai essayé de stocker la longueur d'un tableau dans une variable puis d'imprimer la valeur de la variable sur le terminal, mais il n'y a pas de sortie!

#!/bin/bash


###################################################################################

openFilesCount=$(lsof -Fn -u teeba| sort  | uniq | grep /home | wc -l);

openPortsCount=$(lsof -Fn -u teeba| sort  | uniq | grep /home | wc -l);

readingTime=$(date +%Y-%m-%d_%T);

usersArr=($(awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd) );

pidsArr=($(ps axo pid));

lastIdex=${#usersArr[@]};

###################################################################################

echo "$lastIndex";

Où est l'erreur? Comment stocker la longueur du tableau dans une variable?

2
Akari

Votre syntaxe est fondamentalement correcte. (Vous n'avez besoin d'aucun des ; mais ce n'est pas un problème.)

Il semble que votre script ne soit pas vraiment exécuté, car:

echo ${#nonexistentarray[@]}

Ceci toujours affichera un nombre égal à 0 (si le tableau n'existe pas) ou supérieur (si le tableau ou la variable existe).

Donc dans votre script, si ces deux lignes sont vraiment exécutées:

lastIdex=${#usersArr[@]};
echo "$lastIndex";

....... ok ... Il y a une faute de frappe ici: vous définissez la valeur dans lastIdex mais ensuite vous imprimez lastIndex... C'est probablement votre problème.

3
janos