例如,我想編寫一個bash shell腳本來執行循環備份,其格式爲rsync
。我應該把它作爲一個獨立的腳本文件(backup.sh
)還是將它包裝在一個函數中(backup
)?作爲腳本文件,我可以運行它bash backup.sh
。作爲一個函數,我可以把它放在一個文件中,例如foo.sh
,並在我登錄時獲取它,然後我可以簡單地運行backup
作爲備份我的文件的命令。問題是,這兩種策略有哪些缺點和優點?獨立shell腳本與shell函數?
更一般地說,我想知道,在什麼情況下,我應該實現一個功能作爲一個獨立的Shell腳本文件或作爲一個shell函數?
我的一些想法:我知道一些圖形會話(如KDE,Gnome等)在登錄時輸入不同的文件。如果想在圖形啓動的應用程序中使用shell函數(例如單擊圖標打開emacs),可能會造成一些混淆。但我更喜歡實現shell函數並將它們合併到文件中,我認爲它們整齊有序。
任何其他想法或建議?
這個標準對我來說似乎很模糊。我真的看不到腳本帶來的清晰度。一個函數所需的資源往往是可以忽略的,不是嗎? – RNA
它們有點含糊,但如果我不會每小時使用一次該代碼,它就屬於腳本。我使用腳本來處理比我更頻繁使用的東西。實際上,我在shell中有兩個函數,其中一個是因爲IT提供的'/ etc/profile'中的一個錯誤(bug:'unset pathmunge'不能刪除函數;需要'unset -f pathmunge'),而我也沒有創建另一個 - 我還沒有追蹤它的來源。我一直使用腳本;我有數百個在我的$ HOME/bin中。 [...繼續...] –
[...繼續...]不要誤解我的意思;有時間使用功能。我的許多腳本都包含函數,因爲它們可以更輕鬆地編寫腳本。但是我在我的主登錄shell環境中沒有太多功能。 –