通過終端模擬進行shell腳本測試
我正在開發一個可以在不同發行版中執行的通用 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
?我會簡單地測試您發現自己使用的系統是否使用
rpm
或dpkg
管理他們的包: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 多個包。為了更好地檢測實際分佈,請參閱此處接受的答案,這應該讓您了解它的複雜程度。當您可以輕鬆檢測所使用的打包系統時,您真的想為數十個發行版編寫特定於發行版的測試嗎?