1行のコマンドで1つのフラグをコメント化できるようにしたいのですが。Bashはfrom # till end-of-line
コメントしているようです。私は次のようなトリックを見ています:
ls -l $([ ] && -F is turned off) -a /etc
醜いですが、何もないよりはましです。もっと良い方法はありますか?
以下は動作するようですが、移植可能かどうかはわかりません:
ls -l `# -F is turned off` -a /etc
1行のコマンドで1つのフラグをコメント化できるようにしたいのですが。Bashはfrom # till end-of-line
コメントしているようです。私は次のようなトリックを見ています:
ls -l $([ ] && -F is turned off) -a /etc
醜いですが、何もないよりはましです。もっと良い方法はありますか?
以下は動作するようですが、移植可能かどうかはわかりません:
ls -l `# -F is turned off` -a /etc
回答:
私の好みは:
これには多少のオーバーヘッドがありますが、技術的にはあなたの質問に答えます
echo abc `#put your comment here` \ def `#another chance for a comment` \ xyz etc
特にパイプラインについては、オーバーヘッドのないよりクリーンなソリューションがあります
echo abc | # normal comment OK here tr a-z A-Z | # another normal comment OK here sort | # the pipelines are automatically continued uniq # final comment
$(#comment)
。
)
、コメント自体の一部として考慮されます。bashの課題のほとんどは、古いバージョンとのレトロな互換性によるものであり、1つの一般的な戦略は、可能な限り最も古いソリューションを使用することです。
true && `# comment` && true
。有効な式です。実際のコメントは次のようなものを生成します:syntax error near unexpected token
&& '`
行をコピーして元のバージョンをコメント化するのが最も簡単です(そして最も読みやすい)。
#Old version of ls:
#ls -l $([ ] && -F is turned off) -a /etc
ls -l -a /etc
$(: ...)
少し見苦しくないですが、それでも良くありません。
$(: ...)
構文が実際にコメントの埋め込みを許可していないように見えることです。echo "foo" `# comment` "bar"
コメントは2番目のバックティックで終了しますが、同等のものecho "foo" $(: # comment) "bar"
はの後ろで何も解析しません#
。
それを変数に格納するのはどうですか?
#extraargs=-F
ls -l $extraargs -a /etc
これが、パイプで連結された複数のコマンド間のインラインコメントに対する私の解決策です。
コメントなしのコードの例:
#!/bin/sh
cat input.txt \
| grep something \
| sort -r
パイプコメントの解決策(ヘルパー関数を使用):
#!/bin/sh
pipe_comment() {
cat -
}
cat input.txt \
| pipe_comment "filter down to lines that contain the word: something" \
| grep something \
| pipe_comment "reverse sort what is left" \
| sort -r
または、必要に応じて、ヘルパー関数を使用しない同じソリューションを以下に示しますが、少し面倒です。
#!/bin/sh
cat input.txt \
| cat - `: filter down to lines that contain the word: something` \
| grep something \
| cat - `: reverse sort what is left` \
| sort -r
変数が空であることがわかっている場合は、コメントとして使用できます。もちろん、それが空でなければ、コマンドをめちゃくちゃにしてしまいます。
ls -l $ {1#-Fがオフになっている} -a / etc
${name:=comment}
安全に使用してください。
のようなコマンドの一部を無効にするために、パス上にa && b
空のスクリプトx
を作成しただけなので、次のようなことができます。
mvn install && runProject
構築する必要があるとき
x mvn install && runProject
そうでない場合(を使用Ctrl + AしCtrl + Eて、最初と最後に移動します)。
コメントで述べたように、これを行う別の方法は、次の:
代わりにBash組み込みですx
。
$ : Hello world, how are you? && echo "Fine."
Fine.
:
ように:string; of; commands; : disabled; enabled;
コメントを作成する価値がある場合は、おそらく行の最後に置くことも、単独で行に入れることもできます。どの言語でも、コメントの前後にコードを含む行内コメントが必要になることはめったにありません。
ああ、例外が1つあります。それは、私が通常使用するSQLの方言であり、「{comments}」を使用します。時々、私は書きます:
CREATE UNIQUE INDEX u1_table ON Table(...);
CREATE {DUPS} INDEX d1_table ON Table(...);
しかし、それでも一続きです。
#comment
トリックはここにも言及されていますstackoverflow.com/questions/9522631/...