2012-01-09 12 views

Odpowiedz

18

Z bash/sh/ksh, można zrobić:

if [ ! -d /directory/to/check ]; then 
    mkdir -p /directory/toc/check 
fi 

przypadku plików, wymień -d z -f, to można robić, co trzeba operacje na pliku nieistniejącą.

+7

rzeczywistości nie potrzebują czek. 'mkdir -p' nie działa na istniejącym katalogu. – thiton

+1

To sprawiedliwy punkt. Zostawię to tak, jakby podało OP strukturę, na wypadek gdyby chcieli zrobić coś innego przed 'mkdirem'. –

+1

Należy zauważyć, że daje to warunki wyścigu w przypadku, gdy katalog jest tworzony między pierwszą a drugą linią. – Sjoerd

5
test -d /src/com/mot || mkdir /src/com/mot 
4

Sprawdź katalogu istnieje

if [ -d "$DIRPATH" ]; then 
    # Add code logic here 
fi 

Sprawdź katalog nie istnieje

if [ ! -d "$DIRPATH" ]; then 
    # Add code logic here 
fi 
5

Cóż, jeśli tylko sprawdzić w katalogu, aby go utworzyć, jeśli nie istnieje, równie dobrze możesz użyć:

mkdir -p /src/com/mot 

mkdir -p utworzy katalog, jeśli nie istnieje, w przeciwnym razie nic nie robi.

3

To jest baisc, ale myślę, że to działa. Będziesz musiał ustawić kilka zmiennych, jeśli szukasz dynamicznej listy, aby przejrzeć i sprawdzić.

if [ -d /src/com/mot ]; 
then 
    echo Directory found 
else 
    mkdir /src/com/mot 
fi 

nadzieję, że to, czego szukaliśmy ...

+0

Brakuje ci ";" po zamknięciu "]" klauzuli "if". –

+0

dziękuję .. naprawiono – Silvertiger

+0

@Chirstian The ';' nie jest potrzebny po znaku "]", a "]" nie jest nawiasem zamykającym. W przypadku polecenia "[", końcowe "]" jest po prostu argumentem tego polecenia.Nowa linia służy temu samemu celowi co średnik. –

Powiązane problemy