A falta de aspas em torno da atribuição a uma variável contendo !
é o problema aqui. O shell tenta interpretar o caractere !
para executar a expansão do histórico antes de atribuí-lo à variável. As citações devem impedir que o shell interprete o conteúdo como '..'
como especial e mantenha-o como está.
A tarefa deveria ter sido escrita como
PASSWD='!PaSsWoRd!'
e passar a variável com expansão citada
echo "$PASSWD" | openconnect --csd-wrapper="$WRAPPER" --authenticate --user="$USER" --authgroup="$AUTHGROUP" --passwd-on-stdin "$DOMAIN"
Ou altere temporariamente a expansão do histórico no script, incluindo a linha set +H
na parte superior do script. Subseqüentemente, execute set -H
no final para desabilitá-lo. Isso não é recomendado e muito recomendado para usar a abordagem correta citada acima.