我既喜欢又讨厌写 Bash。我喜欢它在操作文件和处理进程方面如此精简(我同意这个流行的问题,在这方面它比 Python、Ruby 等要好得多),但我讨厌这种语法,尤其是在条件、循环等方面.
(这是主观的,但我觉得它既令人困惑又烦人。例如$var
,在阅读时,但var
在写作时;如果 周围有空格,则写入静默失败=
;使用正则表达式时 ifs 中的双括号;有时使用双分号,其他使用单分号;等等。 )
作为可编译为 JS 的 CoffeeScript 的忠实粉丝,我一直在想:是否有任何语言具有 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
这是一个超级人为的例子,语法是一个稻草人(主要受 CoffeeScript 启发,但保留了一流命令的基本 Bash 概念,与变量分离,以及松散的类型)。
无论如何,只是一个问题和思考的食物。我希望能够用比 Bash 更好的方式编写脚本。=) 谢谢!