我既爱又恨写Bash。我喜欢它是所以简化操作文件和使用进程(我同意this popular question它在这方面比Python,Ruby等更好),但我讨厌的语法,特别是在条件,循环等是否有任何编译为Bash的语言?
(这是主观的,但我觉得这两个困惑和愤怒如$var
读书的时候,但写作时var
;在IFS使用正则表达式时,双括号;写入默默地如果周围有=
空格失败;双分号有时和单分号等;)
作为CoffeeScript的一个巨大的粉丝,其中c ompiles to JS,我一直在想:是否有任何语言具有像Python/Ruby/CoffeeScript这样的语言的美学/语法,但是它们是作为Bash而不是其他运行时编译和运行的语言?
E.g.我很乐意能写大多-击只是一个有点简单的语法:
$AGGREGATE_FILENAME = 'allfiles.txt'
if not exists $AGGREGATE_FILENAME
touch $AGGREGATE_FILENAME
for $file in files/*
cat $file >> $AGGREGATE_FILENAME
switch $1
case 'test'
run-tests
echo 'Tests finished!'
case 'deploy'
echo 'Packaging...'
mv foo bar/
deploy-bar
这是一个超级人为的例子,而且语法是一个稻草人(主要来自CoffeeScript的启发,但保持基本概念猛砸一流的命令,与变量分开,打字松散)。
无论如何,只是一个问题和思考的食物。我会爱能写我的脚本比Bash更好。 =)谢谢!
你考虑过看Perl吗?它具有文件大小,简洁的存在检查('''print'exists'if(-e $ filename);''')并且反向执行。 – tjdett 2012-04-20 02:16:57
我还没有尝试过Perl。在我写这个问题时想到了,但我一直认为Perl也充满了难以理解的语法。 = D我会检查一下 - 谢谢! – 2012-04-20 02:21:12
它可以。幸运的是,您并不需要自己实际使用*。 – 2012-04-20 02:44:27