我将一些有关系统的信息存储在一个数组中..并且我尝试将数组的长度存储在一个变量中,然后在终端上打印该变量的值,但没有输出!
#!/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));
lastIdex=${#usersArr[@]};
###################################################################################
echo "$lastIndex";
错误在哪里?如何将数组的长度存储在变量中?
答案1
您的语法基本正确。(您不需要任何这些,;
但这不是问题。)
看起来您的脚本并未真正执行,因为:
echo ${#nonexistentarray[@]}
这会总是打印一个数字 0(如果数组不存在)或更大的数字(如果数组或变量存在)。
因此在你的脚本中,如果这两行真的被执行:
lastIdex=${#usersArr[@]};
echo "$lastIndex";
....... 好的...那里有一个拼写错误:您正在设置值,lastIdex
然后打印lastIndex
...所以这可能是您的问题。