avatar

Derek Zeng

A programmer

Boot Script

by coderek

发现用sh脚本写一些简单的东西很真是很麻烦,比如找到当前所在的路径就需要这样写,

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

看到这行代码我被吓傻了。可能现在的程序员太娇气了,但以前这种shell脚本的确非常非常流行。可能现在也有很多人用,比如这段程序的出处,stackoverflow上就有387人问这个路径怎么找。当然我也是其中一个,今天有个需求想用脚本很方便的实现,可是我实在是没什么经验,以为shell很简单。现在看来,实在是有太多的比较现代,和简单的方式来干这种事情。比如说ruby,求当前路径是这样, Dir.pwd

很显然ruby是一个更好的选择。我认为主流脚本语言如python, ruby, perl完成这种任务都会比shell来的方便,而且现在大多数操作系统也都自带这些语言。我能想到shell脚本存在的理由,也是非常重要的一个,nix系统都用shell来作为主要的入口,几乎所有事情都用它来完成,所以shell脚本是原生支持的,写像*rc这样的配置文件很方便。除此之外,我开不到它的任何优点。 我的需求其实很简单,就是根据运行参数来启动两个不同程序。其中用到比较高级的功能如解析xml如果用shell来做估计是很难很难的,前提条件是可能性大于0。 下附是用titanium sdk在模拟器上运行android和iphone程序的脚本,

#! /Users/invinzeng/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
# android emulator need to be running before this script is called

TI_IOS = ENV['TI_IOS']
TI_AND = ENV['TI_AND']

if ARGV.first=='ios'
require 'xmlsimple'
config = XmlSimple.xml_in('tiapp.xml')
CWD = Dir.pwd
APPID = config['id'][0]
APPNAME = config['name'][0]

exec "#{TI_IOS} simulator 5.1 #{CWD} #{APPID} #{APPNAME}"
else
exec "#{TI_AND} run --platform=android --android=/Users/invinzeng/Downloads/android-sdk-macosx/"
end
(End of article)