Se houver um "Problemas do Primeiro Mundo" para scripts, seria esse.
Eu tenho o seguinte código em um script que estou atualizando:
if [ $diffLines -eq 1 ]; then
dateLastChanged=$(stat --format '%y' /.bbdata | awk '{print $1" "$2}' | sed 's/\.[0-9]*//g')
mailx -r "Systems and Operations <sysadmin@[redacted].edu>" -s "Warning Stale BB Data" jadavis6@[redacted].edu <<EOI
Last Change: $dateLastChanged
This is an automated warning of stale data for the UNC-G Blackboard Snapshot process.
EOI
else
echo "$diffLines have changed"
fi
O script envia email sem problemas, mas o comando mailx está aninhado em uma instrução if, portanto, pareço ter duas opções:
- Coloque
EOI
uma nova linha e quebre os padrões de indentação ou - Mantenha o recuo, mas use algo como uma declaração de eco para obter o mailx para sugar o meu email.
Estou aberto a alternativas ao heredoc, mas se houver uma maneira de contornar isso, é a minha sintaxe preferida.
$dateLastChanged
) se eu fizer a coisa hypen + quote no seu exemplo, mas se eu pegar o hífen e as aspas e colocar EOI em um nova linha ele começa a expandi-lo novamente.