O Bash expande as variáveis (como identificadores que começam com $
) entre aspas duplas "
.
Embora isso também devesse ter sido um problema ao fazer isso interativamente a partir da linha de comando.
O Bash tentará expandir "$NF"
, se a variável NF
não estiver definida, o bash expandirá isso para a sequência vazia.
Geralmente, você pode usar aspas simples em '
para que $NF
não seja expandido por bash.
No entanto, como você deseja que ${server_name}
expanda, tente tentar escapar em dobro
machine_type='awk "BEGIN{IGNORECASE=1;}/${server_name}/ {print \$NF}" ff_servers.db'
Você também pode tentar usar a concatenação de strings, a diferença é principalmente estilística.
machine_type='awk 'BEGIN{IGNORECASE=1;}/'${server_name}'/{print $NF}' ff_servers.db'
Isso funciona como o bash irá concatenar as strings adjacentes juntas.