验证文件是否移动cmp bash到另一行或将不起作用

验证文件是否移动cmp bash到另一行或将不起作用,bash,Bash,我正在bash中运行一个函数,比较两个文件$SRC和$DEST,我正在验证命令是否有效。这是我的工作职责。但是,如果我删除了回音,那么即使它工作了,它也会返回不成功。如果我保留它,它会添加一个额外的空白输出行,并且是成功的。我尝试了以下方法: if [[ cmp -s "$SRC" "$DEST" >/dev/null 2>&1 ]] 这将返回错误。有什么想法吗 copysuccess() { #Variable to track comm

我正在bash中运行一个函数,比较两个文件$SRC和$DEST,我正在验证命令是否有效。这是我的工作职责。但是,如果我删除了回音,那么即使它工作了,它也会返回不成功。如果我保留它,它会添加一个额外的空白输出行,并且是成功的。我尝试了以下方法:

     if [[ cmp -s "$SRC" "$DEST" >/dev/null 2>&1 ]]
这将返回错误。有什么想法吗

    copysuccess()
    {
    #Variable to track command
    local COM=$1
    if  cmp -s "$SRC" "$DEST" >/dev/null 2>&1 
    echo " "
    then
        echo "$COM was successful"
    else
        echo "$COM was unsuccessful"
    fi
    }
更新: 尝试了以下代码,现在输出

cmp:file:是一个目录

我应该注意到这是针对文件和目录的。对不起

另外,如果我移动一个覆盖目录,它不会输出任何内容

          Does not work:
          cmp -s "$SRC" "$DEST"; [[ "$?" = 0 ]] && echo "$COM was successful" || echo "$COM was unsuccessful"

          Does not work:
          cmp -s "$SRC" "$DEST" && echo "$COM was successful" || echo "$COM was unsuccessful"

您应该检查已执行命令的返回值,而不是当前方法。我会这样做的:

cmp -s "$SRC" "$DEST" >/dev/null 2>&1 && echo "success" || echo "failure"

由于-s选项会阻止所有输出,因此可以删除其余的输出

最终接受了Jdamian的建议并使用了$

我创建了一个全局函数,每当输入一个主要函数时,以及当我得到副本部分时,它都会被重置

        cp -f $SRC $DEST
        TEST=$?
增加了。然后

            copysuccess()
            {
            #Variable to track command
            local COM=$1
            if [[ $TEST == 0 ]]
            then
            echo "$COM was successful"
            else
            echo "$COM was unsuccessful"
            fi
            }

这是最好的选择,我基本上想要验证命令是否成功运行,我不清楚这一点,并且想要验证副本是否有效,糟糕的是,我的方法很愚蠢,不知道$?

在没有回音的情况下对我有效。回音是一个废话。由于echo返回OK,因此始终执行then子句,这意味着如果我移动一个重命名的目录。你是比较还是重命名?更新答案,看看。抱歉,整个脚本是为dos用户自动化linux命令的一部分。重命名与此无关,它使用带有-f选项的copy命令覆盖文件夹,实质上是用现有文件覆盖现有文件。只是用这个来验证cp命令是否有效。@BlackSimth,我认为您可以抑制;[[$?=0]]我不明白@jdamian为什么要显式测试cmp命令返回的代码是否为零然后| |这样做:cmp-s$SRC$DEST和echo success | | echo failurecmp-s$SRC$DEST;[[$?=0]&&echo$COM成功| | echo$COM失败返回unsuccessfull并输出cmp:file:是执行目录操作时的目录。但是复制目录仍然有效fine@Wilken,是否尝试将常规文件与目录进行比较?