67

私は Bash を書くのが好きでもあり嫌いでもあります。ファイルの操作とプロセスの操作が非常に合理化されていることは気に入っています (この点に関しては Python や Ruby などよりもはるかに優れているというよくある質問に同意します) が、特に条件文やループなどに関する構文が嫌いです。 .

(これは主観的なものですが、私はそれが紛らわしくて迷惑だと思います。たとえば$var、読むとき、しかしvar書くとき; 周りにスペースがあると、書き込みは黙って失敗します=; regexp を使用するときの 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 よりも優れた方法でスクリプトを記述できるようになりたいと思っています。=) ありがとう!

4

8 に答える 8

20

C 構文言語を Bash (および Windows Batch) にコンパイルするDSL ( Domain-Specific Language ) である Batsh を試すこともできます。

于 2013-10-29T17:04:34.970 に答える
15

私が最初にこの質問をして以来、この問題に取り組み、かなり良い仕事をする 2 つのプロジェクトがリリースされました。どちらも、よりプログラミングしやすいランタイムで多く/ほとんどの Unix ツールを再実装します。

Plumbum は Python で実装されており、かなり堅実に見えます。

http://plumbum.readthedocs.org/en/latest/index.html

ShellJS は Node.js に実装されており、見た目もかなり良いです。

https://github.com/arturadib/shelljs

エキサイティングな展開!それらを試すのが楽しみです。すでに持っている場合は、コメントであなたの経験を聞くのは素晴らしいことです. ありがとう!

于 2012-10-09T17:39:00.917 に答える
9

上記のすべて(結果)を試し、 powscriptを開始しました。

powscriptと上記のツールの違い

  • 非常に移植性の高いプリプロセッサ (100% bash)
  • coffeescript と bash のバランス
  • bash で書かれた、手間のかからないポータブルなオールインワン ファイル コンパイラ/ランタイム
  • Loose Transpiler: インライン bash は常に可能
于 2016-02-21T00:35:05.453 に答える
7

Bish は別のオプションです。

https://github.com/tdenniston/bish

モダンな雰囲気のシェルスクリプト。

Bish は、21 世紀にシェル スクリプトを導入するために作成された軽量言語です。これは、プログラマーに最新の構文の快適さを提供しますが、Bash にコンパイルされるため、移植性が高くなります (Bash が移植可能である限り)。

于 2015-09-11T18:45:56.627 に答える
5

問題は、Bash の文字列ベースのセマンティクス全体がひどく壊れているため、CoffeeScript のようなものを Bash で実行するのはかなり難しいことです。

Bash で記述された関数を呼び出すために関数レベルの相互運用性はおそらく必要ないため、まったく別のものを使用する方がよいでしょう。Perl は Bash に似ていて、厄介で、ショートカットや奇妙な構文に満ちていますが、そのセマンティクスはほとんど健全です。Python は、プロセスの起動などにはあまり快適ではありませんが、一般的なシステム プログラミングにははるかに優れており、クリーンで保守が容易です。Python には、すべての優れたライブラリとモジュールがあります。パールはさらに良い。

于 2012-06-06T12:08:45.230 に答える
2

ZSh を試してみることをお勧めします。ZSh には、シェル スクリプトをより読みやすくするための多くの改善点があります。

http://www.zsh.org

于 2012-09-12T12:24:24.030 に答える