我有这段代码,如果当前文件(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
?我该如何解决这个问题?
答案 0 :(得分:3)
您需要在if
条件中使用括号或使用test
命令,因此它应该是
if [[ "$curhash" != "$thehash" ]]; then
并注意-ne
用于整数比较,!=
用于字符串比较
如果没有[[
或test
,变量会被扩展并成为要运行的命令,这就是为什么它试图执行cksum
的输出:{{{}}的内容1}}被视为一个命令。
另外,正如@Sundeep所提到的,从子shell获取输出的更常用的首选方法是使用curhash
而不是反引号。 here是一个很好的答案,谈论那个