斗胆给 Ruby 新人这个建议。
就说 split 和 join 吧。用 shell 脚本写,如果不用第三方工具 (awk 我也就不会), 需要这样写:
name=$(basename $0)
# 以 _ 作为 delimiter, 将一个字符串 split 到一个叫做 array 的数组中.
IFS='_' && read -a array <<< "$name"
# 现在 $array 里面有了个数组.
# 以 : 作为 delimiter, 将数组的元素合成一个字符串.
IFS=":" && task="${array[*]}"
# 恢复默认 IFS.
IFS=
echo "$task"
如果用 ruby, 真的好简单,你根本不用考虑记录分隔符的问题。
task=$(echo `basename $0` |ruby -e 'print ARGF.readlines(".").map(&:chop).join(":")')
通过比较,你可能再也不想用 shell 脚本了。
唯一的一个问题是:万一某些发布版没有 Ruby 解释器咋办?可能有点杞人忧天?
其实我想表达的是:
在 Ruby 中面对的 几乎所有
问题,或者说 Ruby 的绝大多数功能,都是 UNIX 下存在 很久的功能
优雅的再包装,Ruby 已经深深的扎根在 Linux 文化当中,你不可能绕过 UNIX 而试图去真正了解 Ruby.
Ruby 不一定更简洁,但一定更优雅,更易读。
#15 楼 @mobiwolf 貌似我没怎么宣传过这个 gem,api4baidu
,需要改进添加的地方还挺多,有七天的时间没提交了,研究别的去了,国庆会继续完善这个 gem。
如果您有什么需要沟通的请直接联系我的新浪微博:http://www.weibo.com/denghuaitao