내 액세스 포인트가 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[@]}"