2011-05-23 100 views
0

我們有幾個ruby腳本需要翻譯成bash腳本。有沒有人在過去做過這樣或類似的事情(比如說從Python到bash)。你對我有沒有任何指導方針/啓發式?Ruby to bash腳本翻譯

+0

你可以告訴我們腳本的功能嗎? – 2011-05-23 03:34:12

+0

腳本執行一些實用計算,例如執行數據庫調用,使用memcached緩存連接以及一些算術運算,只要我能夠理解。需要簡化,以便更廣泛的受衆能夠理解它們。 – Ketan 2011-05-23 03:38:26

+2

這東西不是真正的bash的甜蜜點(特別是算術)。我建議你採用Ignacio的建議並保留現有的Ruby腳本。也許重構他們一點? – 2011-05-23 03:39:34

回答

1

我不想判斷你的想法,因爲不可能告訴給定的工作更好。也許bash,也許紅寶石。所以這裏是我的$ 0,02:

  • 將任務分解爲更小的任務。嘗試找到一些shell命令(或unix可執行文件)給定較小的任務。例如:files = Dir.glob("*.jpg") =>ls *.jpg對於此任務,您應該儘可能多地知道盡可能多的unix命令,您應該知道應該是。嘗試ls /bin /usr/bin並檢查您的命令。你認識他們嗎?如果沒有 - 轉換將是一個艱鉅的任務...;)

  • 調試每個單獨的小任務(如果可能的話)

  • 使用盡可能多的shell內置越好。 (它們通常比運行外部命令快一點)你知道什麼內置插件有你的外殼嗎?

  • 儘可能多地使用管道將較小的任務連接成大的任務。這是困難的部分。將代碼分解爲更小的任務是最好的,當他們可以單獨運行時,使用stdin/out(管道準備就緒)。通常需要(稍微)改變應用程序的邏輯。

  • ,如果你有慶典的合理的新版本 - 你可以使用它的一些網絡編程過,例如:爲/ dev/

慶典聯網{TCP | UDP} - 有沒有與你的/ dev /目錄 - 它們是bash的內部。

exec 3<>/dev/tcp/www.google.com/80 
echo -e "GET/HTTP/1.1\n\n" >&3 
cat <&3 
4

第一條準則是:不要這樣做。如果你的腳本已經工作,那麼通過翻譯它們可能無法工作是毫無意義的。

第二條準則是:翻譯任務,而不是代碼。這是,尤其是重要,因爲您正在從功能更強大的語言轉移到功能更差的語言。

+1

我認爲bash在某些任務中擊敗了Ruby(特別是如果你所做的只是調用一堆系統命令),那麼它的能力就差一些。如果最初的Ruby腳本會更好地寫成bash腳本,那麼......但是您的建議並不直接將Ruby轉移到bash上。 – 2011-05-23 03:33:39