2011-04-26 28 views
0

我正在使用Bash腳本編寫一個實用程序,我想包含一個更新功能。目前該腳本如下Ruby的寶石理念,例如一個命令與多個子:更新自我的Bash腳本?

gem help 
gem version 
gem update 

理想情況下,你可以運行:

myscript update 

但我不知道這是可能的。

這是怎麼回事?我知道寫入當前正在運行的腳本是一個糟糕的想法。

+0

爲什麼寫入當前正在運行的腳本是一個壞主意? – 2011-04-26 19:25:57

+0

@user unknown:這取決於你如何編寫,文件系統的語義以及你的shell的實現。假設你的shell一次只讀取一個文件中的指令,並且你設法修改文件的方式使得它解釋的文件已經從它下面改變了。它可能繼續在不同的地方執行,部分通過指令執行,甚至超過文件的末尾。 – 2011-04-26 22:00:26

+0

在執行之前,shell不會將整個腳本加載到內存中嗎? – 2011-04-27 03:51:18

回答

4

只需調用wget即可下載新版本。成功下載後,將其移動到當前腳本的位置,並且chmod +x它。

+2

+1。我可能會先'chmod + x',然後'exec mv'。可能過度殺傷,但會讓我睡得更輕鬆。 :-) – 2011-04-26 18:35:06

+0

這導致一個空文件 – Tristan 2011-04-26 18:49:40

+0

呃,從頭開始,問題與網站:) – Tristan 2011-04-26 18:56:46