有人知道这是怎么回事吗

if ! /fgallery/fgallery -v -j3 /images /usr/share/nginx/html/ "${GALLERY_TITLE:-Gallery}"; then
  mkdir -p /usr/share/nginx/html

我理解第一部分是说如果/fgallery/fgallery目录不存在,但在这之后我就不清楚了。

最佳答案

在BASH中,我们可以根据命令的退出状态构建一个if:

if command; then
  echo "Command succeeded"
else
  echo "Command failed"
fi

部分在命令以0和then部分退出时执行。
你的代码正是这么做的。
它可以重写为:
/fgallery/fgallery -v -j3 /images /usr/share/nginx/html/ "${GALLERY_TITLE:-Gallery}"; fgallery_status=$?
if [ "$fgallery_status" -ne 0 ]; then
  mkdir -p /usr/share/nginx/html
fi

但是前一种构造更优雅,更不容易出错。
请参阅以下文章:
How to conditionally do something if a command succeeded or failed
Why is testing "$?" to see if a command succeeded or not, an antipattern?

09-25 20:41