Скрипт продолжает работать часами - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь подсчитать количество разделителей (точка с запятой, запятая или труба) во 2-й и 3-й строке файла.Если счетчик не совпадает, файл следует переместить в отклоненную папку.Когда файл находится в папке «pathname = / opt / interfaces / sample_check / mvfiles / inbox», скрипт работает нормально.Но когда файл не находится в этой папке, скрипт продолжает работать часами, пока его принудительно не прервать.Я что-то упустил, не могли бы вы помочь.

pathname=/opt/interfaces/sample_check/mvfiles/inbox

findresult=$(find $pathname -type f ( -name "messagemulti.csv" -or -name "messagesemi.txt" -or -name "comma2.txt" -or -name "messagepipe.txt" -or -name "tokkalodi.txt" -or -name "ADMC_POSITION-LT3213.csv" -or -name "DMC_CASHFLOW248.csv" -or -name "ADMC_EQBASKET-WEIGHTS_52387.csv" -or -name "ADMC_POSITION-DDD7.csv" -or -name "ADMC_POSITION-DDD7.csv" ))


Count=`sed -n 2p $findresult | tr '[,]' '\n' | tr '[|]' '\n' | tr '[;]' '\n' | wc -l`
Count2=`sed -n 3p $findresult | tr '[,]' '\n' | tr '[|]' '\n' | tr '[;]' '\n' | wc -l`

echo $Count
echo $Count2
#if the delimiter count from the 2nd line and 3rd line doesnt match the    file will move to the rejected folder
if [ $Count != $Count2 ]

 then echo "Mis Match"

 mv $findresult /opt/interfaces/sample_check/mvfiles/reject
 else echo "Match"
 exit
 fi

Ответы [ 2 ]

1 голос
/ 16 марта 2019

Проверьте результат перед подсчетом. Я также сделал несколько небольших изменений:

if [ -n "${findresult}" ]; then
   Count=$(sed -n 2p ${findresult}  | tr ',|;' '\n' | wc -l)
   Count2=$(sed -n 3p ${findresult} | tr ',|;' '\n' | wc -l)
fi

Возможно, вы хотите избежать wc:

 if [ -n "${findresult}" ]; then
    str1=$(sed -n '2s/[^,|;]//gp' ${findresult})
    str2=$(sed -n '3s/[^,|;]//gp' ${findresult})
 fi
 if [ ${#str1) -ne ${#str2} ]; then
1 голос
/ 15 марта 2019

Добавьте / dev / null к вашему результату поиска:

findresult="$(find $pathname -type f ( .... )) /dev/null" 

итак, sed получит дополнительно что-то пустое для работы вместо ожидания ввода пользователя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...