使用 hg 的基本 bash if 语句失败

使用 hg 的基本 bash if 语句失败

我正在运行 Cygwin。我在 FFmpeg Wiki 中发现了以下 Bash 代码片段FFmpeg 编译指南

cd /ffmpeg_sources && if cd x265 2> /dev/null; then hg pull && hg update && cd ..; \
else hg clone https://bitbucket.org/multicoreware/x265; fi

据我了解,这是一个非常基本的if语句,如果 CD 进入目录,则返回非零值x265失败(即如果它不存在),然后从 Mercurial 存储库克隆,这将创建 x265 文件夹,以供下次提取和更新。

失败的错误cd x265按预期被抑制,但随后我还得到了以下输出:

中止:在‘/ffmpeg_sources’中未找到存储库(未找到.hg)!

这个输出似乎是then hg pull && hg update && cd ..;语句部分的结果,并且是出乎意料的,因为此时它应该简单地回退到克隆目录。

我唯一想到的是 FFmpeg Wiki 上的代码已经过时了,而且 Mercurial 从那时起就实现了目录定位失败时的致命中止.hg。我是对的吗,还是我忽略了某些显而易见的东西?

答案1

只是调试你的if(这是错误的,明显地) 和现存的不存在目标目录

类似于(根据记忆,抱歉,我现在没有 bash-shell)

if cd x265 2> /dev/null; then echo "The directory exist"; else echo "The directory doesn't exist"; fi

因为现在:

  • cd 失败(重新读取部分错误消息“... in'/ffmpeg_sources'”)
  • 但执行的是拉取部分而不是克隆部分

它可以是“cd 的退出代码始终为零”

可能的原因描述了这种奇怪的行为这里与解决方案

相关内容