我如何在多行上注释命令行参数?

时间:2014-11-07 23:21:30

标签: bash

我想编写一个bash脚本,对所有参数都有很好的评论。

#!/bin/bash

command \
  # this is important because ..
  -flag arg \
  # this is also important b/c ..
  --other-option \
  # etc..

反斜杠只会在注释之前转义换行符,因此-flag arg被视为新命令。

2 个答案:

答案 0 :(得分:3)

您正在寻找的是#34;内联评论"。您可以使用反引号(`)来模仿这些,并使用斜杠(\)结束该行,如下所示:

echo \
  `# this is a comment` \
  -e 'duuuuddddee!!!'

如评论中所述,此解决方案存在一些开销

答案 1 :(得分:3)

mattyice有一个很好的建议。

另一种方法是将命令粘贴在数组中以减少注释的噪声开销。这也允许以这样的方式打印命令:它可以很容易地在脚本之外重新发布:

cmd=(
  tar

  # Extract a named, gzipped file
    xzf "$file"

  # Ignore the leading directory
    --strip-components=1
)

# Optionally print the command in copy-pasteable format
echo "Executing: "
printf "%q " "${cmd[@]}"
echo

# Execute the command:
"${cmd[@]}" 

任何管道或重定向都会在执行行上,而不是在数组中。