A saída de iwconfig
coloca o nome do ponto de acesso entre aspas duplas, o que leva a algumas estranhezas. O autor do roteiro lida com esse "artefato" em seu roteiro, em vez de se livrar dele imediatamente. Sugiro remover as aspas antes de fazer qualquer outra coisa. Duas abordagens possíveis seriam:
$ eval moo='iwconfig wlan0 | awk -F":" '/ESSID/{print $2}' '
$ moo='iwconfig wlan0 | awk -F":" '/ESSID/{print $2}' |tr -d \"'
O primeiro executa a instrução de atribuição de variável "literalmente", enquanto o outro remove aspas duplas da string de saída.
O segundo problema com o script está na suposição de que não há problema em usar $ LIST sem citá-lo (já que a string conteria aspas duplas). Acho que isso é um erro porque a string ainda é avaliada como dois tokens:
$ moo='"aaa bbb"'
$ if [ $moo = "\"aaa bbb\""];then ok;fi
ash: bbb": unknown operand
$ if [ "$moo" = "\"aaa bbb\"" ];then echo ok;fi
ok
Para corrigir isso, cite os parâmetros entre colchetes e elimine as aspas com escape no segundo argumento (porque as removemos da saída do iwconfig):
if [ "$LIST" = "$1" ]; then ...
Além disso, para passar uma string com caracteres irregulares (espaço, parênteses) como um argumento para um script, basta citar:
$ autoconnect.sh "a name (with a comment)"
A última parte sobre a correspondência do nome com o grep já foi respondida adequadamente por glenn jackman.
Nota: O acima foi testado com cinza BusyBox (1.20.2).