쉘 스크립트에서 공백으로 구분된 문자열 배열을 사용하는 방법은 무엇입니까?

쉘 스크립트에서 공백으로 구분된 문자열 배열을 사용하는 방법은 무엇입니까?

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

관련 정보