控制台显示来自 if 语句的 "unknown operand"
console shows "unknown operand" from a if statement
我正在尝试为我的嵌入式系统 运行ning 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
我不明白为什么会这样,我认为让我的脚本这样是不准确的。有人可以向我解释 shell 在做什么以及如何摆脱这条消息吗?
谢谢
引用 md5sum
的输出,这样它就不会被拆分成多个单词。 -z
只需要一个操作数。
if [ -z "`md5sum "$filename.tar" | grep $md5`" ]
既然我们在这里,不妨切换到更好的 $(...)
语法。
if [ -z "$(md5sum "$filename.tar" | grep $md5)" ]
我正在尝试为我的嵌入式系统 运行ning 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
我不明白为什么会这样,我认为让我的脚本这样是不准确的。有人可以向我解释 shell 在做什么以及如何摆脱这条消息吗?
谢谢
引用 md5sum
的输出,这样它就不会被拆分成多个单词。 -z
只需要一个操作数。
if [ -z "`md5sum "$filename.tar" | grep $md5`" ]
既然我们在这里,不妨切换到更好的 $(...)
语法。
if [ -z "$(md5sum "$filename.tar" | grep $md5)" ]