warunkowy problem z cygwin / bash


1

Używam Cygwin w systemie Windows i muszę uruchomić warunkowo, aby porównać i wydrukować wynik. Brzmi prosto, ale nie działa zgodnie z oczekiwaniami. Mój skrypt to:

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"

Dane wyjściowe to:

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!!!

Moje zamieszanie jest następujące: 7 == 7 niż dlaczego wydrukowano „NIE DOPASUJE”? Jak to naprawić i sprawdzić, czy gdy liczby są równe, wypisuje „MECZ”, a gdy są różne, wyświetla „NIE DOPASUJ”? Dzięki

Odpowiedzi:


3

Kiedy porównujesz, nie porównuje a == bzawartości apliku lub bpliku. Zamiast tego spróbuj przekształcić dane w zmienne:

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

HTH!


Cześć Iwan. Ostatnio bardzo mi pomogłeś z Cygwinem. Tym razem muszę rozszerzyć swoją sprawę i znaleźć nie tylko różnice w liczbie, ale także różnice w nazwach rzeczywistych. Z jakiegoś powodu składnia nie działa dla mnie. Czy mógłbyś mi pomóc ponownie znaleźć różnicę między $ a a $ b?
susik
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.