无法检查bash中的校验和---显然,语法错误?

时间:2016-10-08 12:48:37

标签: bash

我有这段代码,如果当前文件(reload)被更改,则应该调用$1

thehash="`cksum $1`"

while true
do
    curhash="`cksum $1`"
    if "$curhash" -ne "$thehash"; then
        reload
    fi
    ...
done

tl; dr:它不起作用。

由于我对bash不是很熟悉,我无法弄清楚我做错了什么。我收到这个错误:

58003725 834183 main.pdf: command not found

显然,bash正在尝试执行curhash?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您需要在if条件中使用括号或使用test命令,因此它应该是

if [[ "$curhash" != "$thehash" ]]; then

并注意-ne用于整数比较,!=用于字符串比较

如果没有[[test,变量会被扩展并成为要运行的命令,这就是为什么它试图执行cksum的输出:{{{}}的内容1}}被视为一个命令。

另外,正如@Sundeep所提到的,从子shell获取输出的更常用的首选方法是使用curhash而不是反引号。 here是一个很好的答案,谈论那个