如何在 Bash 中拆分字符串并将标记存储在数组中

如何在 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”?如果是,该怎么做?

答案1

您可以使用,

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

for i in "${usersArr[@]}"
do
    echo "$i"
done

答案2

试试这个

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

希望能帮助到你

相关内容