1

Я использую Cygwin в Windows, и мне нужно выполнить условное сравнение и распечатать результат. Звучит просто, но работает не так, как ожидалось. Мой сценарий:

ls //NSVA/Matrical/Vitesse/REPORTS | grep .csv | grep $1 | grep -v Pull | wc -l > a
ls //10.9.214.200/Lims/LimsLZ/starlims1/done/Nitrostore_stored/$1 | grep -v Pull |wc -l > b

echo 'Count of Uploaded files in NS is' 
cat a
echo 'Count of Uploaded files in LZ is' 
cat b
if [ a == b ]; then
    echo "Count MATCH!";
else
    echo "Count does NOT MATCH!!!";
fi;

rm "a" "b"

Выход:

C:\Users\User>ReportsUploadCheck.bat 2017-10
Count of Uploaded files in NS is
7
Count of Uploaded files in LZ is
7
Count does NOT MATCH!!!

Мое замешательство: 7 == 7, почему он напечатал «не совпадает»? Как это исправить и убедиться, что если числа равны, выведите «MATCH», а когда они различаются, выведите «NOT MATCH»? Спасибо

1 ответ1

3

Когда вы делаете сравнение, он сравнивает a == b не содержимое файла a или b . Попробуйте вместо этого получить данные в переменные:

a=$(ls //NSVA/Matrical/Vitesse/REPORTS | grep .csv | grep $1 | grep -v Pull | wc -l)
b=$(ls //10.9.214.200/Lims/LimsLZ/starlims1/done/Nitrostore_stored/$1 | grep -v Pull |wc -l)

echo "Count of Uploaded files in NS is $a"
echo "Count of Uploaded files in LZ is $b"

if [ "$a" = "$b" ]; then
    echo "Count MATCH!";
else
    echo "Count does NOT MATCH!!!";
fi

НТН!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .