首页 > 解决方案 > 来自嵌套 for 的字符串比较总是返回 false

问题描述

主要问题是我尝试解析 ls 来模拟“比较目录”,但是当我这样做时,因为我使用嵌套 fors 我无法正确比较它的结果,因为比较两个文件名/字符串,即使它们是相同的它总是返回 false

我尝试擦除白色字符但没有结果。

var1=$(ls -l $1 | grep -v ^d | tail -n +2 | tr -s " "| cut -d " " -f 9)
var2=$(ls -l $2 | grep -v ^d | tail -n +2 | tr -s " "| cut -d " " -f 9)

for i in $var1 ; do
    i=$(printf "$i" | tr -d '[:space:]')
    flag=0
    var3=$(ls -l $1 | grep -v ^d | tail -n +2 | tr -s " " | grep $i | cut -d " " -f 5)
        for j in $var2 ; do
        j=$(printf $j | tr -d '[:space:]')
                var4=$(ls -l $2 | grep -v ^d | tail -n +2 | tr -s " " | grep $j | cut -d " " -f 5)
                if [ "$i" == "$j" ] ; then
                        if [ "$var3" != "$var4" ] ; then
                                flag=1
                        fi
                else
            flag=1
        fi
        done
    if [ $flag -eq 1 ] ; then
        printf "$i file does not exist on the $2 catalog\n"
        printf "It 's size is :$var3 \n"
        let Sum=$Sum+$var3
    fi
done

标签: bashunixsh

解决方案



推荐阅读