因为我熟悉 Ruby,所以我打算使用它在 OS X 上编写一些脚本。但后来我想,也许我错过了船。我知道有很多理由更喜欢 Ruby 而不是 Bash(或任何与 sh 兼容的命令语言解释器),但我不知道有什么理由不这样做。直接对 shell 进行编程有什么好处?
我打算在必要时使用 system
来利用系统命令。
注意:我已经知道 Ruby 不会一直存在,但我主要对技术、语义和句法标准感兴趣。
Ruby 并不总是存在,我的意思是它不是所有 *nix 发行版的标准部分,这与 vi
不同。
除了一件事,shell 的编程语言很糟糕。
管道。
Shell 的管道编程语言非常棒。
|
、&
和 ;
运算符,加上 ()
和 ``` 组成了一个整洁的小东西描述管道的语言。
a & b
并发
一个; b
是连续的
一个 | b
是一个管道,其中 a 提供给 b
shell 编程的那一部分很厉害。
想想 ( a & b & c ) |开球 | analysis
是一种很难用 Python(或 Ruby)表达的东西。你可以用 iterpipes 做很多事情,但并非全部。
其余的大部分你都可以没有,使用 Python(或 Ruby)你会更快乐,更有效率。
要注意的最重要的事情是在 shell 级别涉及 expr
的任何事情。一旦您开始尝试进行“计算”,您就已经超出了 shell 的甜蜜点,您应该停止在 shell 中编程并重新考虑您正在做的事情。