Como dividir uma string no bash e armazenar os tokens no array

0

Eu escrevi esse script para armazenar algumas informações sobre minha máquina, como os usuários e os processos em execução.

Eu tentei armazenar os dados recuperados em uma matriz. Para testar o array, imprimi o tamanho de um array da seguinte forma:

#!/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);

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

echo "${#usersArr[@]}";

A saída é 1 ... embora os usuários sejam três? Preciso dividir os dados recuperados em "\ n", por exemplo, antes de armazená-los na matriz? se sim, como?

    
por Akari 15.02.2014 / 14:08

2 respostas

2

Você pode usar

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

for i in "${usersArr[@]}"
do
    echo "$i"
done
    
por souravc 15.02.2014 / 14:40
1

aqui tente isto

 #!/bin/bash
 array=(elem1 elem2)
 #to print the size of the array
 echo "${array[@]}"  
 #to access an individual member
 echo "element number ${#array[@]}"

Espero que ajude

    
por Sherlock Smith 15.02.2014 / 14:25