簡體   English   中英

控制台從if語​​句顯示“未知操作數”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM