シェルスクリプトで複数行のコマンドをコメントする方法は?


19

長いスイッチの多いコマンドを呼び出すときは、シェルスクリプトで記述することをお勧めします。そのようなスクリプトで行をコメントする簡単な方法はありますか?次の方法を試しましたが、どちらも機能しません。

# the \ is also commented out, resulting in "command" and "--good-switch".
command \
  #--bad-switch \
  --good-switch \

# seems to send an extra argument to the command
command \
  \ #--bad-switch \
  --good-switch
shell 

1
2番目のものは、スペースを引数として送信します(\ 次の文字をエスケープします。これは、改行を「隠します」が、スペースを有効にします)。
ギーコサウルス

回答:


14

これはオプションかもしれません:コマンドと引数を配列に保存してから実行します

# build the command
cmd=( ls
        -F
      # -a   # comment out this option temporarily
        -l
    )
# $cmd is now an array with 3 elements

# execute it
"${cmd[@]}"

これはbash
ソコブ

3

コマンドの直後に、コメントされたものを常に移動しました。

command \
  --good-switch
# --bad-switch          with explanation here, if needed

0

問題は、行が解析される前にスラッシュが削除されるため、最初のコマンドがのように解析されることですcommand #--bad-switch --good-switch。コマンドのシーケンスが本当に長い場合は、たとえば、その上または下に1行ずつコメントブロックを記述して、それぞれを順番に説明するか、変数にパラメーターを格納できます(ただし、特殊文字)。


1
そうではないようです。--good-switchコマンドとして解釈されます。


0

コメントは接続された行のチェーンを破壊するので、最も簡単な解決策は、コメント付きの行をリストの最後に移動することです。

command \
  --good-switch \
  # --bad-switch \

順序を変更したくない場合は、:コマンド(コロンユーティリティ、何も実行しない)を使用して、接続された回線をそのまま維持できます。

command \
  `: --bad-switch `\
  --good-switch \

私はこれでテストしました:

function command { 
  echo "num args:" $#;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.