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

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

多くのスイッチが必要な長いコマンドを呼び出すときは、シェルスクリプトで書くのが最善です。そのようなスクリプトで行をコメントアウトする簡単な方法はありますか?私は次のことを試しましたが、そのうちの何も動作しません。

# 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

答え1

これはオプションです。コマンドと引数を配列に保存して実行します。

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

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

答え2

私はいつもコマンドの後にコメントの内容を移動します。

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

答え3

よりデジタルロスの回答

今投稿した質問も参照してください。連続文字の後にコメントを付けたbash複数行コマンド

これは便利な機能になります。残念ながら、標準的なサポートはありません。

答え4

問題は、行が解析される前にスラッシュが削除されるため、最初のコマンドが作成したかのように解析されることですcommand #--bad-switch --good-switch。長いコマンドシーケンスがある場合は、次のように書くことができます。1行ずつコメントブロック上下に各パラメータが順番に記述されているか、パラメータを変数に保存することができます(これにより、特殊文字の引用のために厄介なことが頻繁に発生しますが)。

関連情報