[英]console shows “unknown operand” from a if statement
我正在嘗試為運行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
我不明白為什么得到這個,並且我認為讓我的腳本這樣不正確。 有人可以向我解釋外殼程序在做什么以及如何擺脫此消息嗎?
謝謝
引用md5sum
的輸出,這樣它就不會拆分成多個單詞。 -z
僅需要一個操作數。
if [ -z "`md5sum "$filename.tar" | grep $md5`" ]
當我們在這里時,不妨切換到更好的$(...)
語法。
if [ -z "$(md5sum "$filename.tar" | grep $md5)" ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.