trong thời gian trễ_command
bước cài đặt không giám sát, tôi đang chạy tập lệnh shell:
d-i preseed/late_command chuỗi trong mục tiêu /bin/sh -c './execute-script.sh'
Khi đến bước late_command, giao diện người dùng (nền xanh lam, cửa sổ xám) hiển thị thông báo "Đang chèn sẵn...":
Tôi tự hỏi liệu có cách nào để hiển thị sống động các thông báo khác dựa trên những gì thực thi-script.sh
đang làm.
Tôi ngây thơ nghĩ rằng sử dụng STDOUT thông thường với tiếng vang sẽ thực hiện thủ thuật nhưng có vẻ phức tạp hơn.
Các tìm kiếm của tôi cho đến nay đã thu hút sự chú ý của tôi về khả năng sử dụng gỡ lỗi
nhưng tôi đã không thể tìm thấy bất kỳ cách nào.
Phiên bản hiện tại của tập lệnh của tôi được định hình lại theo câu trả lời của @Andrew:
#!/bin/sh
. /usr/share/debconf/confmodule
. "./variables.sh"
logFile="/target${INSTALLATION_LOG_LOCATION}"
templatePath="/target/tmp/deployment_progress_tracker.templates"
con mèo > "${templatePath}" << 'EOF'
Bản mẫu: triển khai_progress_tracker/tiến trình/dự phòng
Loại: văn bản
Mô tả: ${STEP}...
EOF
debconf-loadtemplate Deploy_progress_tracker "${templatePath}"
db_progress START 0 1 Deploy_progress_tracker/progress
nhật ký đồng hồ () {
triển khaiDone=false
trong khi ! $triển khaiXong
làm
nếu [ -f "${logFile}" ]; sau đó
step=$(grep -E -o -a -h "Progress-step: .*" "${logFile}" | tail -1 | sed 's/Progress-step://')
nếu [ -z "${bước##*$DEPLOYMENT_FINISHED*}" ]; sau đó
triển khaiDone=true
yêu tinh [ -n "${bước}" ]; sau đó
db_subst Deploy_progress_tracker/progress/fallback BƯỚC "${step}"
db_progress THÔNG TIN triển khai_progress_tracker/progress/dự phòng
fi
fi
ngủ 3
xong
}
(
nhật ký xem;
rm -f "${templatePath}";
db_progress BỘ 1;
ngủ 1;
db_progress DỪNG LẠI;
db_unregister Deploy_progress_tracker/progress;
) &
Kịch bản trước đó sẽ dẫn đến kết quả như sau:
Và dẫn trở lại menu trình cài đặt (chọn Kết thúc cài đặt sẽ thực sự chạy lại phần được chèn sẵn và không thành công, việc chọn Hủy bỏ sẽ không ngắt kết nối ISO và khởi động lại, dù sao đi nữa, tôi đang cố gắng để cả quá trình ngắt kết nối và khởi động lại được thực hiện tự động):