web-dev-qa-db-ja.com

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";

エラーはどこにありますか?配列の長さを変数に格納する方法は?

2
Akari

基本的に構文は正しいです。 (;は必要ありませんが、それは問題ではありません。)

どういうわけか、スクリプトは実際には実行されていないようです:

echo ${#nonexistentarray[@]}

これはalways 0(配列が存在しない場合)またはそれ以上(配列または変数が存在する場合)の数値を出力します。

スクリプトで、これらの2行が実際に実行された場合:

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

....... ok ...誤字があります:lastIdexに値を設定していますが、その後lastIndex...を出力しているので、おそらくそれが問題です。

3
janos