我想創建簡單的.sh腳本,它將包含我的程序的二進制包,並將其複製到目標文件夾。在安裝過程中,我想顯示gui消息來通知用戶一切正常。似乎從這個問題zenity是我需要How to show a GUI message box from a bash script in linux? 但如何提供它與我的單一.sh腳本? (用戶應該從任何地方運行安裝程序而無需任何其他操作)。對於大多數常見的Linux發行版,是否有通用的特性?也許是「xmessage」,但它看起來很差。還有別的嗎?bash上的安裝程序:如何顯示GUI消息?
0
A
回答
1
任何類似xmessage或zenity或gxmessage都意味着您不能保證可用的外部依賴關係(除非您可以;您在問題中沒有這麼說)。要回答你的其中一個問題,Linux沒有什麼通用的。當然不是任何依賴於X的東西,因爲如此多的Linux安裝是無頭的。
對於「別的東西」,作爲一般原則,自給自足是一個好主意。這意味着使用一些甚至不依賴於X Window系統的東西。無論您在FreeBSD還是Linux,基於外殼的對話都可用。爲了成爲一個真正的自包含的和可移植的(甚至在不同的Linux發行版或不同的服務器配置之間),我建議在你的shell腳本中將自己的對話管理器作爲一個函數來編寫。一些沿線的:
#!/usr/bin/env bash
# A supporting function to see test a value against the contents of an array
is_in() {
value=$1; shift
for i in "[email protected]"; do [[ $i == $value ]] && return 0; done
return 1
}
# Simple dialog implementation, no VT100 required,
dialog() {
# $options is an array of options
local i line max=0
# determine dialog width
for line in "${options[@]}"; do [[ ${#line} -gt $max ]] && max=${#line}; done
# draw a line
eval printf '%.s-' {1..$((max+8))}; echo
# print each option
for i in ${!options[@]}; do
printf "| %2d: %-${max}s |\n" "$i" "${options[i]}"
done
eval printf '%.s-' {1..$((max+8))}; echo
response=""
# only accept valid responses
while ! is_in "$response" "${!options[@]}"; do
read -p " Choose: " response
done
return "$response"
}
# Create our list, run the dialog, capture the result,
options=([1]="Hello world" [2]="This is a test")
dialog
result=$?
# And display the result.
echo "RESPONSE: $result/${options[$result]}"
相關問題
- 1. 在GUI上顯示消息
- 2. 顯示消息安裝
- 3. 安裝修補程序後,laravel webapp顯示錯誤消息
- 4. 如何獲取Inno安裝程序以僅顯示消息,並取消按鈕,以便安裝停止
- 5. 安裝失敗並顯示消息INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
- 6. 安裝失敗,顯示消息「INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME」
- 7. 如何在啓動Inno Setup安裝程序時顯示消息框
- 8. 如何在我的應用程序的textview上顯示消息,但不在消息框上顯示
- 9. 如何在Android上顯示已安裝應用程序的詳細信息?
- 10. JBoss GUI安裝程序?
- 11. 如何在AppVeyor上安裝具有GUI安裝程序的軟件?
- 12. 安裝消息處理程序
- 13. 掛鉤在Windows安裝程序消息
- 14. Wix Bundle安裝程序,未安裝成功消息的服務
- 15. Msi安裝程序顯示卸載時使用的文件消息
- 16. Windows安裝程序安裝進度狀態消息
- 17. NotifyIcon顯示來自程序的消息
- 18. 安裝後提示重新啓動消息WIX引導程序
- 19. 安裝Edge擴展後不顯示gui
- 20. 無法安裝SDK,並顯示消息「沒有安裝任何東西」!
- 21. 如何在LiveTV上顯示Toast消息
- 22. linux bash沒有顯示任務消息
- 23. 如何在Wix安裝程序失敗時提示錯誤消息
- 24. 如何在GUI消息中顯示windows服務異常?
- 25. Javascritpt程序來顯示某個消息
- 26. 未顯示jQuery驗證程序消息
- 27. PHPmailer如何顯示消息
- 28. android - 如何顯示消息
- 29. 如何顯示Toast消息?
- 30. 如何在Ubuntu上安裝Doxygen GUI?
爲什麼要這樣做呢?這違反了Linux系統上軟件管理系統引入的所有良好實踐。爲什麼不使用包管理而不是創建自己的安裝程序?沒有一個理智的系統管理員會信任它。除此之外,在任何Linux發行版中使用現有的軟件包管理系統都更加舒適和安全。 – arkascha 2015-04-06 13:47:10
包管理在不同的分配方面有所不同,我不知道哪些distrs會使用我的用戶,並且創建所有可能的包似乎對我的小程序來說是不合理的。而這個程序不適合系統管理員。此外,對於我的嵌入式專業,我使用通用安裝程序(例如Xilinx ISE網絡包和Quartus)與專有Linux程序一起工作,並且它在Ubuntu和我的Arch Linux分佈式系統上都能很好地工作。 – user3479125 2015-04-06 13:55:10
我從來沒有質疑這樣的定製安裝程序的工作。我說沒有一個理智的管理員使用它們,因爲沒有辦法告訴他們對系統做什麼。爲什麼要將一個人的系統的全部管理權交給一個不認識的人,他不知道他的動機?沒有那麼多的軟件包格式,實際上只有2或3個有點廣泛。看看opensuse的OpenBuildService。它允許您爲許多發行版創建清理包,甚至提供下載存儲庫。不能變得更舒適... – arkascha 2015-04-06 14:05:21