ฉันมีรหัสนี้ใช้งานได้:
# Hide irrelevant errors so chrome doesn't email us in cron
if [[ $fCron == true ]] ; then
google-chrome --headless --disable-gpu --dump-dom \
"$RobWebAddress" > "$DownloadName" 2>/dev/null
else
# Get silly error messages when running from terminal
google-chrome --headless --disable-gpu --dump-dom \
"$RobWebAddress" > "$DownloadName"
fi
ถ้าฉันพยายามย่อให้สั้นลงเช่นนี้:
# Hide irrelevant errors so chrome doesn't email us in cron
local HideErrors
[[ $fCron == true ]] && HideErrors="2>/dev/null"
google-chrome --headless --disable-gpu --dump-dom \
"$RobWebAddress" > "$DownloadName" "$HideErrors"
ฉันได้รับข้อความแสดงข้อผิดพลาด:
[0826/043058.634775:ERROR:headless_shell.cc(597)] Open multiple tabs is only supported when remote debugging is enabled.
[0826/043058.672587:ERROR:headless_shell.cc(597)] Open multiple tabs is only supported when remote debugging is enabled.
[0826/043058.711640:ERROR:headless_shell.cc(597)] Open multiple tabs is only supported when remote debugging is enabled.
(... SNIP ...)
เหตุใดอาร์กิวเมนต์ที่ทำงานแบบตายตัวทำงานได้ แต่ไม่ใช่อาร์กิวเมนต์เป็นตัวแปร
แก้ไข 2:
ขณะนี้ฉันพบความสำเร็จด้วยคำแนะนำสำรองของคำตอบที่สอง:
# Redirect errors when cron is used to /dev/null to reduce emails
ErrorPipe=/dev/stderr
[[ $fCron == true ]] && ErrorPipe=/dev/null
google-chrome --headless --disable-gpu --dump-dom \
"$RobWebAddress" > "$DownloadName" 2>"$ErrorPipe"
แก้ไข 1:
จากคำตอบแรกฉันควรชี้ให้เห็นว่าส่วนหัวของโปรแกรมประกอบด้วย:
[[ $fCron != true ]] &&
exec 2> >(grep -v 'GtkDialog mapped without a transient parent' >&2)
[[ $fCron == true ]] && exec 2>/dev/null
แทนได้