Nếu có "Vấn đề thế giới thứ nhất" cho kịch bản, thì đây sẽ là nó.
Tôi có đoạn mã sau trong tập lệnh tôi đang cập nhật:
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
Kịch bản gửi email mà không có vấn đề, nhưng lệnh mailx được lồng trong một câu lệnh if để tôi dường như bị bỏ lại với hai lựa chọn:
- Đặt
EOI
trên một dòng mới và phá vỡ các mẫu thụt đầu dòng hoặc - Giữ với thụt lề nhưng sử dụng một cái gì đó như một câu lệnh echo để nhận mailx để hút email của tôi.
Tôi mở các lựa chọn thay thế cho heredoc, nhưng nếu có cách nào để khắc phục điều này thì đó là cú pháp ưa thích của tôi.
$dateLastChanged
) nếu tôi thực hiện dấu ngoặc kép + trong ví dụ của bạn, nhưng nếu tôi lấy dấu gạch nối và trích dẫn và đặt EOI lên dòng mới nó bắt đầu mở rộng nó một lần nữa.