2013-08-17 2 views
2

Сначала я хочу сказать, что я действительно не знаю, что мне следует искать, здесь, в Stack Overflow, и что может быть хорошим запросом для моей проблемы.mkdir всегда создает файл вместо каталога

Простыми словами я хочу создать новый каталог, а не выполнять некоторые операции с файлами. Но со сценарием, который я создал, у меня всегда был файл, а не каталог. Кажется, что абсолютно независимо от того, как я придерживаюсь кода, всегда есть тот же результат. Я надеюсь, что тат-масса может помочь мне с их знаниями.

Вот сценарий:

#!/bin/bash 

DLURL=http://drubuntu.googlecode.com/git' 
d7dir=/var/www/d7/' 
dfsettings=/var/www/d7/sites/default/default.settings.php 
settings=/var/www/d7/sites/default/settings.php 

#settiing up drush 
drush -y dl drush --destination=/usr/share; 

#Download and set up drupal 
cd /var/www/; 
drush -y dl drupal; 

mkdir "$d7dir"; #this is the line that always produces a file instead a directory 
       # regardless if it is replaced by the variable or entered as   
       # /var/www/d7 


cd /var/www/drup*; 
cp .htaccess .gitignore "$d7dir"; 
cp -r * "$d7dir"; 
cd "$d7dir"; 

rm -r /var/www/drup*; 
mkdir "$d7dir"sites/default/files; 
chmod 777 "$d7dir"sites/default/files; 
cp "$dfsettings" "$settings"; 
chmod 777 "$settings"; 
chown $username:www-data /var/www/d7/.htaccess; 
wget -O $d7dir"setupsite $DLURL/scripts/setupsite.sh; > /dev/null 2>&1 
chmod +x /var/www/setupsite; 
echo "Login Details following..."; 
read -sn 1 -p "Press any key to continue..."; 
bash "$d7dir"setupsite; 
chown -Rh $username:www-data /var/www; 
chmod 644 $d7dir".htaccess; 
chmod 644"$settings"; 
chmod 644"$dfsettings"; 
exit 

Я надеюсь, что кто-то получил причину этого.

+4

Являются ли одинарные кавычки в конце первых двух строк на самом деле в вашем коде? Потому что, если они тогда, переменная 'd7dir' не будет установлена. Кроме того, вы можете добавить 'set -x' в начало вашего скрипта, чтобы вы могли видеть некоторую информацию об отладке. – user000001

+0

Является ли это копией сценария или вы его вводили? Также есть несколько других проблем: последние два 'chmod' нуждаются в пробеле после 644, третий из последних' chmod' должен иметь «перед' $ d7dir', wget missing »перед' $ d7dir', chmod после wget неправильно (должен быть '' $ d7dir "setupsite') и т. д. – Sithsu

+0

эти две одиночные кавычки не в оригинале. Thyre yust из синтаксиса stackoverflow. – Josh

ответ

1

Существует много способов отладки оболочки-скриптов.

  • Добавить set -x в вашем начинающегося сценарий
  • Получить возвращаемое значение.

    mkdir 'the-directory' 
    ret=$? 
    if test $ret -eq 0; then 
        echo 'Create success.' 
    else 
        echo 'Failed to create.' 
    fi 
    
  • Установить в подробный режим $ mkdir -v 'the-directory'

Попробуйте эту команду $ type mkdir, чтобы проверить команду MKDIR.

+0

Я добавил параметр -v verbose за mkdir, а затем начал bash с именем sudo bash -x. Скрипт работает с корытом и работал, если я запускаю его нормально, результат все равно является файлом d7. Это очень загадочно, не так ли? – Josh

+0

Попробуйте создать свою папку с '$ mkdir -v $ folder_name', пожалуйста, покажите мне эту команду' $ type mkdir' – emaniacs

+0

Тот же результат здесь. Я избегал ошибки, создавая каталог прежде всего. Для меня это, кажется, ошибка в гну-ядрах. Я не совсем уверен, поэтому я не буду публиковать это как ошибку. – Josh

Смежные вопросы