2011-05-06 100 views
2

我有興趣聽到大家的意見,Shell腳本與其他腳本語言相比競爭力強多少?Shell腳本和其他語言

例如不shell腳本,爲您提供了Python和Perl或紅寶石或R等什麼樣的待遇。

這將是有趣的Shell腳本愛好者知道Shell腳本的優勢...: )

沒有犯罪,我在shell腳本一個新手,想知道外殼比其他腳本語言的實際優勢..

預先感謝您

+0

傑夫,人們沒有回答我的問題...在所有4個答案:)如果我的問題太含糊或模糊等...我不會收到答案... :)你想要點更多關於類型安全和性能的要點 – Angelo 2011-05-09 12:01:02

回答

2

優勢彈:

  • 管道,過濾器和重定向來容易地利用其他程序/公用事業
  • 輕鬆顯示,並出口到環境變量的變化聯合動力 - 以及影響操作系統的限制 - 計劃你調用
  • 功能強大且可編程的命令完成功能不僅能夠識別內置命令,而且還能夠感知目錄,文件和其他程序及其命令行選項(至少在良好的shell中 - zsh,bash ...)
  • 作業控制功能在後臺運行多個任務,等待他們完成
  • 文件名全域允許在套符合條件的文件
  • 非常簡潔/簡潔相當強大的ad-hoc調整環境變量簡單的操作(將它們拆分成單詞,刪除/替換子串,取目錄路徑的頭部或尾部...),如果您將大部分時間花在shell腳本以外的其他東西上,那麼很難記住它們...

什麼貝殼不會如此偉大是:

  • 調用其他語言編寫的庫例程(儘管許多可以被編譯成實用程序)
  • 用戶定義的結構化數據類型和容器(哈希表,鏈表,樹)
  • 類型安全
  • 性能
+0

+1。 – tenpn 2011-05-06 09:53:08

2

shell腳本在invok真的好ing計劃。他們還以各種方式爲stdin,stdout和stderr重定向,並且對由被調用的程序返回的錯誤代碼做出反應非常好。如果您對參數使用$1等的函數定義通常非常有用。

沒有其他語言無法做到,但語法經過簡單優化,使這些事情變得非常簡單。儘管shell腳本(特別是對於可正確編寫腳本的shell,例如bash或zsh,當然不是csh或tcsh)確實提供了許多其他有用的東西,並且允許編寫幾乎任何東西(我認識的學生認爲數字賦值對他來說簡直太簡單了,所以他把自己的代碼寫成bash腳本......當然是工作的很好),語法根本就沒有進行優化,你通常必須編寫奇怪的線路噪聲,以便將n的值增加1.

總之,對於涉及更多邏輯和「古典編程」的任何腳本任務,我會使用shell腳本來處理大於80%的調用外部程序的任何內容以及其他內容(通常爲ruby)。

1

在我看來,shell腳本中的管道和過濾器系統可以讓您非常輕鬆地爲shell編寫有用的單行程程序。通常,你還會有很多與典型shell任務交互的簡短方法,例如檢查文件是否存在,是否遍歷文件等等。在更通用的腳本語言中,您可能需要更多代碼來執行這些任務。 但是,您可以在其他語言中做更多的事情,例如GUI編程,您可以獲得適當的面向對象,繼承等。 IMO它是用於不同方面的兩種工具,它們具有一些共同的用例。 Shell腳本語言將允許自動執行shell任務或允許與文件,套接字,進程等進行直接交互的小腳本。腳本語言更通用或專用於不同的事物(如R專門用於計算和表示統計問題)。

0

所有shell都是不同的,所以這必須採取一撮鹽,但一些更好的shell腳本環境和你提到的一些語言,如perl和ruby沒有太大的區別。特別是在編寫批處理腳本時。

但是,對於日常的repl用法,shell環境將更緊密地耦合到您的文件系統,包括將您鏈接到文件系統中的某個位置。這將是主要優勢。