Как разбить строку в bash и сохранить токены в массиве

Я написал этот сценарий для хранения некоторой информации о моей машине, такой как пользователи и запущенные процессы.

Я пытался сохранить полученные данные в массив. Чтобы протестировать массив, я напечатал длину массива следующим образом:

#!/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[@]}";

Вывод равен 1 ... хотя пользователей три? мне нужно разделить полученные данные на "\ n", например, прежде чем сохранять их в массиве? если да, то как?

0
задан 15 February 2014 в 17:35

2 ответа

Вы можете использовать,

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

for i in "${usersArr[@]}"
do
    echo "$i"
done
0
ответ дан 15 February 2014 в 17:35

здесь попробуйте это

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

Надеюсь, это поможет

0
ответ дан 15 February 2014 в 17:35

Другие вопросы по тегам:

Похожие вопросы: