Проверка существования директории

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Volodymyr
лейтенант
Сообщения: 614
Зарегистрирован: 2008-06-17 16:04:56
Откуда: Ukraine, Lviv
Контактная информация:

Проверка существования директории

Непрочитанное сообщение Volodymyr » 2013-03-25 15:02:50

Нужно проверить наличие директории. Если директории нету, выйти из скрипта. Если есть - то продолжить.

Код: Выделить всё

#!/bin/sh

if [ ! -d "/data/AAA/BBB"]
then
exit
fi
....
В результате пишет [: missing ] и продолжает роботу, директории нету. Что не так в конструкции?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

ChihPih
ст. прапорщик
Сообщения: 568
Зарегистрирован: 2009-09-04 12:23:30
Откуда: Где-то в России...
Контактная информация:

Re: Проверка существования директории

Непрочитанное сообщение ChihPih » 2013-03-25 15:51:45

Пробел вроде как нужен между закрывающей квадратной скобкой и последним символом слева.
www.info-x.org - информационный ресурс о ОС FreeBSD.

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

Re: Проверка существования директории

Непрочитанное сообщение rayder » 2013-03-25 18:38:46

да да, именно так :)
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.


pimlab
прапорщик
Сообщения: 483
Зарегистрирован: 2007-10-09 11:31:03

Re: Проверка существования директории

Непрочитанное сообщение pimlab » 2013-04-17 9:17:28

а как сделать, если нет , то создать папку?

ChihPih
ст. прапорщик
Сообщения: 568
Зарегистрирован: 2009-09-04 12:23:30
Откуда: Где-то в России...
Контактная информация:

Re: Проверка существования директории

Непрочитанное сообщение ChihPih » 2013-04-17 9:44:42

Условие что в первом посте + mkdir
www.info-x.org - информационный ресурс о ОС FreeBSD.

pimlab
прапорщик
Сообщения: 483
Зарегистрирован: 2007-10-09 11:31:03

Re: Проверка существования директории

Непрочитанное сообщение pimlab » 2013-04-17 10:08:52

ChihPih писал(а):Условие что в первом посте + mkdir

Код: Выделить всё

#!/bin/sh

if [ ! -d "/data/AAA/BBB" ]
then
mkdir -p  "/data/AAA/BBB"
fi
....
так чтоли ?

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Проверка существования директории

Непрочитанное сообщение kpp » 2013-04-17 10:20:44

Да, так.
Что смущает?
Еще можно\нужно проверить код отработки утилиты mkdir.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

pimlab
прапорщик
Сообщения: 483
Зарегистрирован: 2007-10-09 11:31:03

Re: Проверка существования директории

Непрочитанное сообщение pimlab » 2013-04-17 10:34:18

kpp писал(а):Да, так.
Что смущает?
Еще можно\нужно проверить код отработки утилиты mkdir.

Код: Выделить всё

#!/bin/sh

if [ ! -d "/data/AAA/BBB" ]
then
mkdir -p  "/data/AAA/BBB"
fi
if [ ! -d "/data/AAA/BBB" ]
then
exit
fi
так чтоли ?
смущает, то что я не понимаю, что делаю...
сейчас просто тупо скрипт создает каждый раз папку
решил переделать, а тут на тебе сразу , то что нужно :)

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Проверка существования директории

Непрочитанное сообщение kpp » 2013-04-17 10:41:01

Вообще-то проверить выполнение любой утилиты:

Код: Выделить всё

if [ $? -eq 0 ]
then
  echo "OK"
else
  echo "ERROR"
fi
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: Проверка существования директории

Непрочитанное сообщение FreeBSP » 2013-04-17 15:23:19

иф сам по себе проверяет код выхода. оборачивать в тест не обязательно

Код: Выделить всё

#!/bin/sh

dir="/data/AAA/BBB"

if [ ! -d $dir ]; then
    echo "Dir $dir is not exist. Trying mkdir"
    if mkdir -p $dir; then
        echo "Dir $dir created"
    else
        echo "Dir $dir create FAILED"
    fi
else
    echo "Dir $dir is exist"
fi
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!

pimlab
прапорщик
Сообщения: 483
Зарегистрирован: 2007-10-09 11:31:03

Re: Проверка существования директории

Непрочитанное сообщение pimlab » 2013-04-17 17:16:52

Спасибо !
в итоге скрипт такой

Код: Выделить всё

#! /bin/sh

dir="/tmp/snmp"
if [ ! -d $dir ]; then
    echo "Dir $dir is not exist. Trying mkdir"
    if mkdir -p $dir; then
	echo "Dir $dir created"
    else
	echo "Dir $dir create FAILED"
	    exit
	fi
else
    echo "Dir $dir is exist"
fi

# update smart parameters
for devfull in /dev/ad?; do
    dev=`basename $devfull`
    echo "$devfull"
    /usr/local/sbin/smartctl -n idle -a $devfull >$dir/smart-$dev.TMP
    mv $dir/smart-$dev.TMP $dir/smart-$dev
done

GhOsT_MZ
лейтенант
Сообщения: 662
Зарегистрирован: 2011-04-25 11:40:35
Контактная информация:

Re: Проверка существования директории

Непрочитанное сообщение GhOsT_MZ » 2013-04-17 18:25:47

А разве так не будет работать? Выглядит значительно изящней.

Код: Выделить всё

[ ! -d $dir ] || mkdir -p $dir;

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: Проверка существования директории

Непрочитанное сообщение FreeBSP » 2013-04-17 21:49:43

на ифах нагляднее, учитывая
pimlab писал(а): смущает, то что я не понимаю, что делаю...
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!