将长命令分成多行

将长命令分成多行

我有一个 shell 脚本,里面有如下命令

#!/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

如何将线路分成多条线路以便更好地理解和管理

#!/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

(出于美观目的而对齐,但不一定如此)。

有关这方面的更多信息,请参阅Shell语法:如何正确使用\来换行?以及相关问题。

答案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[@]}"

这里,括号提供了 shell 需要知道数组赋值何时结束的语法线索。遗憾的是,这仅适用于数组分配,而不能仅适用于单个命令。

另外,如果 jboss 脚本正确设置了执行权限和脚本中的 hashbang,您应该能够像 just 一样运行它,而无需在前面../standalone.sh显式设置。sh

相关内容