Shell скрипт с условие за проверка на съществуването на файлове за Linux

shell

Shell скрипт с условие за проверка на съществуването на файл за Linux/FreeBSD

Ще ви представя скрипт, който архивира файл, ако съществува в дадена директория. Ако файлът не съществува, архивът не се създава.

Други клавиши за проверка на файлове/директории:

Втората версия на bash скрипта за проверка на условието за съществуване на файлове и архивирането им, ако има:

Третият вариант е да проверите условието за съществуване на файлове в директорията:

#Задайте променлива на директория DIR=/000/test/test

#изчислете броя на файловете, които са в дадената директория filecount=`find $DIR -type f wc -l`

#ако броят на файловете е нула, т.е. няма никакви, тогава съобщението if [ $filecount -eq 0 ]; then echo "Няма файлове, изпълнете скрипта по-нататък" else echo "Има файлове, спрете скрипта" && изход fi

Четвъртата опция е да проверите условието за съществуване на файлове в директория с безкраен цикъл:

while true do case `find $DIR -type f wc -l` in 0 ) echo "no file" ;; #Ако няма файлове, се показва съобщение (или можете да замените който и да е ваш скрипт или команда) * ) sleep 5 ;; #ако има файлове в директорията - изчакайте 5 секунди и след това проверете по нов начин (до първата стъпка) esac done exit 0

Подобни публикации:

8 мисли относно „Shell скрипт с проверка за съществуване на файл за Linux/FreeBSD“

Кажете ми как ще изглежда скриптът, който няма да позволи по-нататъшно изпълнение на основния скрипт, докато в посочената директория има файлове (всякакви) с произволно име и разширение?

Алексей, добавих опция към статията за вашите нужди. ще мине ли

Третият вариант мисля също да го отбележа, но ако можепокажете пример, в който ще бъде, както разбирам, безкраен цикъл на проверка за файлове.

Тоест, почти като третия вариант, само ако има файлове, тогава скриптът изобщо не спира да работи, но да кажем, че ще бъде sleep 5 и след него проверката се повтаря и така докато директорията е празна и чак тогава скриптът ще продължи да се изпълнява.

Ще работи ли четвъртият вариант? Проверих - работи както трябва, ако разбирам правилно.

От какво имаш нужда! Благодаря ви

Не мога да разбера, пиша това на рутера. Под sh всичко работи правилно намери $DIR -type f wc -l, и когато самият рутер изпълни тази команда, тогава по някаква причина винаги записва нула файлове в директорията, въпреки че те са там.

За да бъда по-точен, пиша скрипт:

filecount=`find /opt/var/spool/sms/failed/ -type f wc -l` echo -e $filecount >> /tmp/статус

ако този скрипт се изпълнява под ssh, тогава всичко е наред, а ако се изпълнява от cron, тогава получавам нула през цялото време.

Изглежда, че го разбрах, посочих пълния път до командата find.