Tenho um comportamento inesperado - falha no seguinte snippet com erro de 'variável não vinculada':
#!/bin/bash
set -u
<<EOF
a=a
b=$a
EOF
Testado em:
GNU bash, versão 4.4.12(1)-release
GNU bash, versão 4.2.46(2)-release
Responder1
O que você definiu set -u
é forçar uma saída com uma mensagem de erro, se tentar usar uma variável indefinida (O set
comando interno).
A forma de aqui-documentos <<
com EOF
é equivalente a colocar aspas duplas nas palavras internas para permitir que as variáveis sejam expandidas (expansão de parâmetros) pelo shell ( bash
neste caso; também sujeito a substituição de comando e expansão aritmética). Para evitar que a expansão aconteça, cite a string aqui com aspas simples
set -u
<<'EOF'
a=a
b=$a
EOF