シェルスクリプトでスペースで区切られた文字列配列を使用する方法は?

シェルスクリプトでスペースで区切られた文字列配列を使用する方法は?

私のアクセスポイントは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")

また、同じ変数を参照しないでくださいresutlsresults

ちなみに確認する必要はなく、次$?から直接コマンドを実行できます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[@]}"

おすすめ記事