diff --git a/packages/bsp/common/usr/lib/armbian/armbian-firstlogin b/packages/bsp/common/usr/lib/armbian/armbian-firstlogin index 01a8de53c9e2..bd79de98f51d 100755 --- a/packages/bsp/common/usr/lib/armbian/armbian-firstlogin +++ b/packages/bsp/common/usr/lib/armbian/armbian-firstlogin @@ -307,8 +307,8 @@ set_timezone_and_locales() { while [[ ${scanning} -lt 3 ]]; do sleep 0.5 scanning=$(( scanning + 1 )) - ARRAY=($(iwlist ${WIFI_DEVICE} scanning 2> /dev/null | egrep 'ESSID' | sed 's/^[ \t]*//' | sed 's/"//g' | sed 's/ESSID://' | sed '/^$/d' | sort | uniq | awk 'BEGIN{FS=OFS=","} {$NF=++count OFS $NF} 1')) - if [[ $? == 0 ]]; then broken=0; break; fi + readarray -t ARRAY < <(iwlist ${WIFI_DEVICE} scanning 2> /dev/null | egrep 'ESSID' | sed 's/^[ \t]*//' | sed 's/"//g' | sed 's/ESSID://' | sed '/^$/d' | sort | uniq | awk 'BEGIN{FS=OFS=","} {$NF=++count OFS $NF} 1') + if [[ ${#ARRAY[@]} -gt 0 ]]; then broken=0; break; fi done # wifi can also fail if [[ ${broken} == 1 ]]; then @@ -320,14 +320,14 @@ set_timezone_and_locales() { while [[ ${scanning} -lt 3 ]]; do scanning=$(( scanning + 1 )) while [[ 1 ]] ; do - for str in ${ARRAY[@]}; do echo $str | sed "s/,/ \t /g"; done + for str in "${ARRAY[@]}"; do echo $str | sed "s/,/ \t /"; done echo "" read -r -p "Enter a number of SSID: " input if [[ "$input" =~ ^[0-9]{,2}$ ]] ; then break; fi done # get password while [[ -n "${input}" ]] ; do - SSID=$(echo ${ARRAY[$input-1]} | cut -d"," -f2) + SSID=$(echo ${ARRAY[$input-1]} | cut -d"," -f2-) echo "" read -r -p "Enter a password for ${SSID}: " password break