![如何在 Bash 中拆分字符串并将标记存储在数组中](https://linux22.com/image/1045048/%E5%A6%82%E4%BD%95%E5%9C%A8%20Bash%20%E4%B8%AD%E6%8B%86%E5%88%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%B9%B6%E5%B0%86%E6%A0%87%E8%AE%B0%E5%AD%98%E5%82%A8%E5%9C%A8%E6%95%B0%E7%BB%84%E4%B8%AD.png)
我编写了这个脚本来存储有关我的机器的一些信息,例如用户和正在运行的进程。
我尝试将检索到的数据存储到数组中。为了测试数组,我打印了数组的长度,如下所示:
#!/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[@]}"
希望能帮助到你