
私のアクセスポイントはpingが可能かどうかを監視し、結果を0から1の文字列に保存したいと思います。
スクリプトを作成しましたが、エラーが発生して実行されます。
#/bin/bash
access_points=("tplink2" "redmi1")
#results=("A")
declare -a results
for val in "${access_points[@]}"
do
ping -c 4 -w 10 $val 2>&1 >/dev/null
if [ $? -eq 0 ]
then
online="+"
else
online="-"
fi
results[${#results[@]}]=$online
done
echo "${resutls[*]}"
echo $results
なぜ?値を配列ではなくスペースで区切られた文字列として収集できますか?
答え1
配列に要素を追加するには、次のようにします+=
。
results+=("$online")
また、同じ変数を参照しないでくださいresutls
。results
ちなみに確認する必要はなく、次$?
から直接コマンドを実行できますif
。
#! /bin/bash
access_points=("tplink2" "redmi1")
declare -a results
for val in "${access_points[@]}"
do
if ping -c 4 -w 10 "$val" 2>&1 >/dev/null
then
online="+"
else
online="-"
fi
results+=("$online")
done
echo "${results[@]}"