長いコマンドを複数行に分割する

長いコマンドを複数行に分割する

次のコマンドを含むシェルスクリプトがあります。

#!/bin/sh
sh ../jboss/bin/standalone.sh --server-config=standalone-full.xml -Djboss.node.name=node1 -b 0.0.0.0 -bmanagement 0.0.0.0

より良い理解と管理のために1行を複数行に分割する方法

#!/bin/sh
sh ../jboss/bin/standalone.sh 
  --server-config=standalone-full.xml
  -Djboss.node.name=node1
  -b 0.0.0.0
  -bmanagement 0.0.0.0

各行の末尾にバックスラッシュを追加してみましたが、動作しません。

答え1

これは連続と呼ばれ、各行\の最後の文字を除く最後の文字として使用されます。

#!/bin/sh
sh ../jboss/bin/standalone.sh         \
  --server-config=standalone-full.xml \
  -Djboss.node.name=node1             \
  -b 0.0.0.0                          \
  -bmanagement 0.0.0.0

(審美的な目的のためにソートされていますが、必ずしもそうではありません)。

これについて詳しくは、次をご覧ください。シェル構文:改行に\を正しく使用する方法は?そして関連する問題。

答え2

Paul_Pedantのコメントのアイデアに応じて、Bash / ksh / zshで配列を使用できます。

#!/bin/bash
args=(
  --server-config=standalone-full.xml
  -Djboss.node.name=node1
  -b 0.0.0.0
  -bmanagement 0.0.0.0
)
sh ../jboss/bin/standalone.sh "${args[@]}"

ここで、括弧は、配列の割り当ての終わりにシェルが知る必要がある構文手がかりを提供します。残念ながら、これは単一のコマンドだけでなく配列の割り当てにのみ機能します。

../standalone.shまた、jbossスクリプトに実行権限が正しく設定されており、スクリプトにhashbangがある場合は、明示的にあらかじめ設定せずにそのように実行できる必要があります。sh

関連情報