Bash: подсчитать результат поиска в папке - PullRequest
1 голос
/ 24 января 2011

Я пытаюсь подсчитать, сколько файлов может «найти» скрипт, и если его больше, чем один, выдайте один тип сообщения об ошибке, а если его ноль, выдадим еще одно сообщение об ошибке.

Если я запускаю

find procesoSitemap-*.jar -exec printf '.' \;| wc -c

Это работает, и я вижу номер результата поиска, но как я могу внедрить это в скрипт?

##!/bin/bash
FINDPS="find procesoSitemap-*.jar -exec printf '.' \;| wc -c"

    if $FINDPS = 1
    then
            echo "There is ONE procesoSitemap jar file"
    else
            echo "There should be only ONE procesoSitemap jar file"
    fi

Спасибо!

Ответы [ 5 ]

6 голосов
/ 24 января 2011

Использовать обратные метки;

FINDPS=`find procesoSitemap-*.jar -exec printf '.' \;| wc -c`

также исправьте вашу if линию;

if [ $FINDPS -eq 1 ]
then
        echo "There is ONE procesoSitemap jar file"
else
        echo "There should be only ONE procesoSitemap jar file"
fi
1 голос
/ 04 июля 2011

Вы можете ускорить подсчет файлов, избегая find ... -exec ... \; | ...:

- FINDPS="find procesoSitemap-*.jar -exec printf '.' \;| wc -c"
+ FINDPS="$(find . -name "procesoSitemap-*.jar" -print0 | tr -dc '\0' | wc -c)"
1 голос
/ 24 января 2011

Ваш оператор if должен выглядеть следующим образом:

if (( FINDPS == 1 ))

в Bash или в POSIX sh:

if [ $FINDPS -eq 1 ]

Ваше назначение переменной должно быть:

FINDPS=$(find procesoSitemap-*.jar -exec printf '.' \; | wc -c)

в Bash или любой оболочке POSIX.В устаревшей версии Bourne sh используйте обратные пометки:

FINDPS=`find procesoSitemap-*.jar -exec printf '.' \;| wc -c`

Ваш шебанг для Bash должен быть следующим:

#!/bin/bash

У вас слишком много «#».

1 голос
/ 24 января 2011

Я полагаю, что в вашем скрипте есть несколько небольших проблем.Попробуйте это:

#!/bin/bash
FINDPS=`find . -name "procesoSitemap-*.jar" | wc -l`

if [[ $FINDPS == 1 ]] ; then
        echo "There is ONE procesoSitemap jar file"
else
        echo "There should be only ONE procesoSitemap jar file"
fi
0 голосов
/ 24 января 2011

$() или ``, первый предпочтителен (и является POSIX), но последний работает в некоторых старых оболочках.

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