我喜欢和讨厌写Bash。我喜欢它的流水线操作文件和处理(我同意
this popular question,这方面比Python,Ruby等更好),但我讨厌的语法,特别是围绕条件,循环等。
(这是主观的,但我觉得这是令人困惑和烦人的例如,读取时var,但写入时var;如果有空格,则以静默方式失败; =使用regexp时ifs中的双括号;双分号有时和单个分号其他;等)
作为CoffeeScript的一个巨大的粉丝,它编译到JS,我一直在想:是否有任何语言的语言的美学/语法,如Python / Ruby / CoffeeScript,但编译和运行作为Bash,而不是其他运行时?
例如。我想要能够写主要是Bash只是一个更简单的语法:
$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
这是一个超级设计的例子,语法是一个strawman(主要是从CoffeeScript的灵感,但保留一流的命令,分离变量和松散键入的基本Bash的概念)。
无论如何,只是一个问题和食物的思想。我喜欢能够写我的脚本比Bash更好的东西。 =)谢谢!
你也可以尝试Batsh,它是一个DSL(
Domain-Specific Language),编译C语法语言到Bash(和Windows批处理)。