如何在 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));

lastIdex=${#usersArr[@]};

###################################################################################

echo "$lastIndex";

错误在哪里?如何将数组的长度存储在变量中?

答案1

您的语法基本正确。(您不需要任何这些,;但这不是问题。)

看起来您的脚本并未真正执行,因为:

echo ${#nonexistentarray[@]}

这会总是打印一个数字 0(如果数组不存在)或更大的数字(如果数组或变量存在)。

因此在你的脚本中,如果这两行真的被执行:

lastIdex=${#usersArr[@]};
echo "$lastIndex";

....... 好的...那里有一个拼写错误:您正在设置值,lastIdex然后打印lastIndex...所以这可能是您的问题。

相关内容