Você pode usar
usersArr=($(awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd) )
for i in "${usersArr[@]}"
do
echo "$i"
done
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?
Você pode usar
usersArr=($(awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd) )
for i in "${usersArr[@]}"
do
echo "$i"
done
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