我正在写一个自动下载文件的脚本。作者提供了校验和,所以我想在脚本中验证一下这些自动校验和:

if ! [[ $(sha256sum  -c latest-12.tar.bz2.sha256 < latest-12.tar.bz2) = 'latest-12.tar.bz2: OK']]; then
    echo "Fehler im Download"
    exit 1
fi

输出:
syntax error in conditional expression: unexpected token `;'
syntax error near `;'
`if ! [[ $(sha256sum  -c latest-12.tar.bz2.sha256 < latest-12.tar.bz2) = 'latest-12.tar.bz2: OK']]; then'

这是怎么回事?

最佳答案

如注释中所述,在关闭]]之前缺少空格。
实现目标的更好方法是:

if ! sha256sum --quiet -c latest-12.tar.bz2.sha256; then
  echo "Fehler im Download"
  exit 1
fi

或者只是
sha256sum --quiet -c latest-12.tar.bz2.sha256 || { echo "Fehler im Download"; exit 1; }

两个命令都假定latest-12.tar.bz2.sha256中指示的文件路径与运行命令的位置匹配。

关于linux - Shell脚本-验证sha256sum,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47176674/

10-13 05:34