Como armazenar o comprimento da matriz em uma variável na linguagem de script bash

2

Eu armazenei algumas informações sobre o sistema em uma matriz ... e tentei armazenar o tamanho de uma matriz em uma variável e depois imprimir o valor da variável no terminal, mas não há saída!

#!/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: ' >= 1000 &&  != "nobody" {print }' /etc/passwd) );

pidsArr=($(ps axo pid));

lastIdex=${#usersArr[@]};

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

echo "$lastIndex";

Onde está o erro? Como armazenar o comprimento do array em uma variável?

    
por Akari 15.02.2014 / 15:23

1 resposta

3

Sua sintaxe está basicamente correta. (Você não precisa de nenhum ; , mas isso não é um problema).

Parece que, de alguma forma, o seu script não é realmente executado, porque:

echo ${#nonexistentarray[@]}

Isto irá sempre imprimir um número que seja 0 (se a matriz não existir) ou superior (se a matriz ou a variável existir).

Então, no seu script, se essas duas linhas forem realmente executadas:

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

....... ok ... Há um erro de digitação: você está definindo o valor em lastIdex , mas imprimindo lastIndex ... Então, provavelmente, esse é o seu problema.

    
por janos 15.02.2014 / 15:40