Não tenho certeza de qual saída você está esperando (atualizarei esta resposta se ficar clara), mas a mensagem de erro é causada pela saída de printf
to "$ip"
na linha 8, que é interpretada como um comando.
O script a seguir não apresenta erros, mas não tenho certeza se é a saída que você procura:
#!/bin/bash
awk '{
for (i = 1; i <= NF; i++)
if ($i ~ /^SRC=/)
print substr($i, 5)
}' /var/log/syslog | sort -u | while read ip;
do
printf ' INVALID STATE ' && echo "$ip";
whois "$ip" >> log-002.txt;
done
A saída será anexada ao arquivo log-002.txt
no diretório atual (como já estava no seu script original).