将长命令拆分为多行

Mal*_*van 3 shell-script

我得到了一个 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
Run Code Online (Sandbox Code Playgroud)

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

#!/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
Run Code Online (Sandbox Code Playgroud)

尝试在每行末尾使用反斜杠,但不起作用。

Ste*_*itt 7

这称为延续,并\用作每行除最后一个字符之外的最后一个字符:

#!/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
Run Code Online (Sandbox Code Playgroud)

(出于美观目的而对齐,它们不必如此)。

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


ilk*_*chu 7

根据 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[@]}"
Run Code Online (Sandbox Code Playgroud)

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

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