サブシェルのBash構文強調表示


13

Bashのサブシェルに関連することが判明した大量の質問(「このパイプwhile readループで変数が増加しないのはなぜか?」サブシェルで実行されるコードは、親シェルで実行されるコードとは形式が異なります。教育用デバイスとして役立つかもしれません(違いcode | codecode < <(code)即座に確認してください)。これは存在しますか?

誰かがそれをjEditまたはVImに実装した場合のボーナスポイント。

明らかに完全である必要はありません(私の経験では構文の強調表示は(foo=bar; echo $foo;)ありcommand | while read ...ません)が、開始するのが難しいことではないかと疑っています。


vimコードの強調表示に追加できると確信しています。
ケビン

2
@Kevin:質問は、それが既に何らかの形で存在しているかどうかです。もちろん、チューリング完全な強調表示システムをサポートするエディターに追加できます。
l0b0

1
whileループパイプの場合、POSIXはその教育ツールとして、このハイライトは、それが存在する場合、非ポータブルシェルスクリプトを書くために人々を教えてくれる:(、親にパイプが実行のどの部分を指定していません
ジェームズヤングマン

@JamesYoungman:Bash固有にするもう1つの理由:)
l0b0

回答:


2

私はこれが存在するとは思わない。これは便利ですが、エディターで使用される構文解析の標準的な手段では実装が困難です。解析の観点からは、サブシェルに属するコードのブロックを決定するために分析する必要がある多くのキーワードと特別なシンボルがあります。

しかし、私が間違っているのを見てうれしいですし、誰かがそのような構成を作成するために必要な努力をしています。


0

私のVimはすでにこれを行っています。

サブシェル内のコメントが適切なハイライトを適用しないため、実際に私を悩ませます。

ここに画像の説明を入力してください

これは、ソースからコンパイルされたVim 7.3パッチ874です。


zshサブシェル内で作業しているときに、ファイルタイプを設定することがあります。これにより、構文の強調表示が修正されます。

完璧なOMG。ありがとう!! 私はset -x; set -eそのセクションでできるように、サブシェル内にこの巨大なブロック全体(多くのコメント付き)を持たなければなりません。そして、stderrを含むすべての出力をログにキャプチャします。
スティーブンルー

1
私は表示されない任意のは非常に便利いないようサブシェルでフォーマットします。または、スクリーンショットから欠落していますか?
l0b0

変数セットとtrapキーワードはそこで強調表示されています。コメントを強調できなかっただけです。ただし、zshファイルタイプは機能します。さて、メインシェルとサブシェルを区別する限り(結局のところ、これは私が望んでいたものです)、コメントを使用しますか?
スティーブンルー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.