Wenn es ein "First World Problems" für das Scripting gibt, wäre dies das Richtige.
Ich habe den folgenden Code in einem Skript, das ich aktualisiere:
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
Das Skript sendet E-Mails ohne Probleme, aber der Befehl mailx ist in einer if-Anweisung verschachtelt, sodass mir anscheinend zwei Möglichkeiten verbleiben:
- Setzen Sie
EOI
eine neue Zeile und brechen Sie die Einrückungsmuster oder - Behalten Sie die Einrückung bei, aber verwenden Sie so etwas wie eine Echo-Anweisung, damit mailx meine E-Mails aufnimmt.
Ich bin offen für Alternativen zu heredoc, aber wenn es einen Weg gibt, dies zu umgehen, ist es meine bevorzugte Syntax.
$dateLastChanged
einfügen möchte ( ), wenn ich in Ihrem Beispiel den Bindestrich + Anführungszeichen mache, sondern wenn ich den Bindestrich und die Anführungszeichen herausnehme und EOI auf a setze neue Zeile beginnt es wieder zu erweitern.