1

我正在尝试为运行 uClinux 的嵌入式系统编写自动 md5sum 检查脚本。该脚本是在我的计算机上生成的,也是我要检查的 tar 文件。

脚本是这样的:

#!/bin/sh
filename='My_File'
md5='d4deeac6f655ee5d4b9ec150fc6957a5'

if test ! -e $filename.tar
then
    echo Update file does not exist
    exit 1
fi  

if [ -z `md5sum "$filename.tar" | grep $md5` ]
then
    echo 'md5sum is not correct'
    exit 1
else
    echo 'md5sum is correct'
fi  

tar -xvf "$filename.tar"
[...]

md5sum 检查按预期运行,即当校验和错误时脚本停止,否则执行到最后。但是当校验和正确时,我会从控制台收到此消息:

[: My_File.tar: unknown operand

我不明白为什么会这样,而且我认为让我的脚本这样是不准确的。有人可以解释一下外壳在做什么以及如何摆脱此消息吗?

谢谢

4

1 回答 1

3

引用的输出,md5sum所以它不会分成多个单词。-z只需要一个操作数。

if [ -z "`md5sum "$filename.tar" | grep $md5`" ]

当我们在这里时,不妨切换到更好的$(...)语法。

if [ -z "$(md5sum "$filename.tar" | grep $md5)" ]
于 2018-02-01T12:22:31.200 回答