如何在 shell 脚本中使用空格分隔的字符串数组?

如何在 shell 脚本中使用空格分隔的字符串数组?

我要监视我的接入点是否可 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[@]}"

相关内容