Bash

通過終端模擬進行shell腳本測試

  • January 13, 2014

我正在開發一個可以在不同發行版中執行的通用 bash 腳本。

我只有一個 CentOS 虛擬機,我有興趣在虛擬終端上測試我的腳本(線上或作為軟體,沒有寫入權限,只能從作業系統讀取一些標准文件),但就像我在不同的環境中執行它一樣發行版(可以在發行版之間切換)。

一個例子是進行發行版檢測,我不知道我將從其他發行版獲得的預期資訊是什麼。

例如在我的虛擬機上,我得到:

$> test.sh
Your linux distribution is: CentOS
$>

我只是不知道在 RedHat、Ubuntu、Debian 等中會產生什麼結果……

test.sh 的程式碼在這裡

這個想法來自前端開發,您可以使用類似的工具在不同的瀏覽器中測試您的網頁,而無需真正安裝。我知道作業系統比瀏覽器複雜得多,但在Google上搜尋幾次後問題仍然存在。

正如 Chris Down 在評論中所說,檢測分佈確實是檢測包系統的一種不好的方法。例如,您提到“REDHAT + CENTOS + FEDORA = rpm+yum 支持,以及 DEBIAN + UBUNTU = deb+apt-get”。好的,Mint、LMDE、Kali、Backtrack、Crashbang 和所有其他使用dpkg/的發行版apt-get呢?還是 Scientific Linux、Yellow Dog Linux 和 Oracle Linux 都在使用yum?更不用說其他不使用的基於 RPM 的發行版,yum如 SuSe、OpenSuSe、Mandriva Linux、Rosa Linux 或 Mageia?

更好的方法是檢測您要使用的工具。我還建議您rpm直接使用該系統,而不是yum,為什麼要限制自己使用 6 個基於 RPM 的發行版yum

我會簡單地測試您發現自己使用的系統是否使用rpmdpkg管理他們的包:

if [ $(rpm -qa 2>/dev/null | wc -l ) -gt 10 ]; then 
 system="rpm" 
elif [ $(dpkg -l 2>/dev/null | wc -l ) -gt 10 ]; then 
 system="dpkg" 
else 
 system="unk"
fi 
echo $system

由於rpm可以安裝在dpkg基於發行版上,反之亦然,我正在測試每個工具是否安裝了 10 多個包。

為了更好地檢測實際分佈,請參閱此處接受的答案,這應該讓您了解它的複雜程度。當您可以輕鬆檢測所使用的打包系統時,您真的想為數十個發行版編寫特定於發行版的測試嗎?

引用自:https://unix.stackexchange.com/questions/108525