Помогите со скриптом

Discussion in 'Linux, Freebsd, *nix' started by Sitronik, 12 Dec 2014.

  1. Sitronik

    Sitronik Member

    Joined:
    4 Oct 2012
    Messages:
    184
    Likes Received:
    33
    Reputations:
    3
    Только начал разбираться с написанием скриптов в linux и сразу получил проблему, которую не могу решить.
    Пробую выполнить простейший скрипт:
    Code:
    #!/bin/sh
    # Параметр передается как $1, но заново присваивается переменной DIRECTORY
    DIRECTORY=$1
    # Является ли строка пустой ?
    if [ "$DIRECTORY" = "" ] then
    echo "Usage :`basename $0` directory to create" >&2
    exit 1
    fi 
    if [ -d $DIRECTORY ]
    then : # Не чего не выполняет 
    else 
    echo "The directory does exist" 
    echo -n "Создать сейчас? [y..n] :" 
    read ANS 
    if [ "$ANS" = "y" ] || [ "$ANS" = "Y" ] 
    then 
    echo "Создать сейчас!" 
    # Создайте католог и перешлите все данные вывода в /dev/null
    mkdir $DIRECTORY >/dev/null 2>&1 
    if [ $? != 0 ]; 
    then 
    echo "Ошибка создания директории $DIRECTORY" >&2 
    exit 1 
    fi 
    else : # Ничего не выполняет 
    fi
    
    на что мне выводиться следующее сообщение:
    Почему так?
     
  2. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,663
    Likes Received:
    916
    Reputations:
    363
    я могу ошибаться, но вроде конструкция выглядит, как и везде:
    if
    then
    elif
    then
    else
    fi
     
    _________________________
  3. Sitronik

    Sitronik Member

    Joined:
    4 Oct 2012
    Messages:
    184
    Likes Received:
    33
    Reputations:
    3
    В чем же тогда проблема может быть?
     
  4. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,663
    Likes Received:
    916
    Reputations:
    363
    я elif просто так выделил, наверное?
     
    _________________________
  5. Sitronik

    Sitronik Member

    Joined:
    4 Oct 2012
    Messages:
    184
    Likes Received:
    33
    Reputations:
    3
    Теперь такая ошибка:
     
  6. -bI-

    -bI- Member

    Joined:
    25 Aug 2012
    Messages:
    103
    Likes Received:
    11
    Reputations:
    0
    if [ "$DIRECTORY" = "" ]; then
    echo "Usage :`basename $0` directory to create" >&2

    then : # Не чего не выполняет


    После if точка с запятой, пустой then нельзя (двоеточие тоже тут нельзя)
     
    #6 -bI-, 14 Dec 2014
    Last edited: 14 Dec 2014
  7. Sitronik

    Sitronik Member

    Joined:
    4 Oct 2012
    Messages:
    184
    Likes Received:
    33
    Reputations:
    3
    Можешь пожалуйста написать как правильно должен выглядеть этот скрипт, сделал все что ты сказал все равно не получается запустить, просто еще учусь много чего не ясно.
     
  8. ph1l1ster

    ph1l1ster Elder - Старейшина

    Joined:
    11 Mar 2008
    Messages:
    396
    Likes Received:
    153
    Reputations:
    19
    PHP:
    #!/bin/sh
    # Параметр передается как $1, но заново присваивается переменной DIRECTORY
    DIRECTORY=$1
    # Является ли строка пустой ?
    if [ "$DIRECTORY"" ]; then
        
    echo "Usage :`basename $0` directory to create" >&2
        
    exit 1
    fi 

    if [ -d $DIRECTORY ]; then
     
    # Не чего не выполняет 
    else 
        echo 
    "The directory does exist" 
        
    echo -"Создать сейчас? [y..n] :" 
        
    read ANS 
        
    if [ "$ANS"y" ] || [ "$ANS"Y" ]; then 
            
    echo "Создать сейчас!" 
            
    # Создайте католог и перешлите все данные вывода в /dev/null
            
    mkdir $DIRECTORY >/dev/null 2>&
            
    if [ $? != ]; then 
                
    echo "Ошибка создания директории $DIRECTORY>&
                
    exit 
            fi 
        
    else : # Ничего не выполняет 
        
    fi
    fi
     
  9. Sitronik

    Sitronik Member

    Joined:
    4 Oct 2012
    Messages:
    184
    Likes Received:
    33
    Reputations:
    3
    Спасибо, теперь все ясно.