2015-11-05 6 views
0
#!/bin/bash 

BACKUP=backup_date 
SOURCE=Arithmetic_Operators 

echo "Taking backup from ${SOURCE} directory to backup directory ${BACKUP} .." 

# Checking the source directory ${SOURCE} exists or not ! if not exists die 
# Script is unsuccessful with exit status # 1 

[ ! -d $SOURCE ] && echo "source directory $SOURCE not found" 
exit 1 

# Checking the backup directory ${BACKUP} exists or not ! if not exists die 
# Script is unsuccessful with exit status # 2 

[ ! -d $BACKUP ] && echo "backup directory $BACKUP not found" 
exit 2 

# Let Start the backing up 

tar cvf $SOURCE $BACKUP 2> /wrong/logs.txt 

if [ $? -ne 0 ] 
then 
    # die with unsuccessful shell script termination exit status # 3 
    echo "An error occurred while making a source directory backup, see /wrong/logs.txt file". 
    exit 3 
fi 

Это мой сценарий резервного копирования исходный каталог (Arithmetic_Operators) в папку назначения (backup_date), во время выполнения скрипта мой сценарий, заканчивающийся с сообщениемсценарий оболочки резервное копирование исходного каталога в каталог резервного копирования

Принимая резервную копию из каталога Arithmetic_Operators для резервного копирования каталога backup_date ..
каталога источника Arithmetic_Operators не найден

где я сделал ошибку, почему т его сценарий не работает, не могли бы вы помочь мне в этом?

+0

наиболее proabably нет каталога 'Arithmetic_Operators 'в каталоге, где вы запускаете скрипт. –

+0

Спасибо Джеральду !!, между тем ничего плохого в скрипте, это могут быть проблемы с каталогом, а не на пути или самой директории нет. – PradyJord

+0

Спасибо Pradyjord – viswa

ответ

1

Эти строки означают, что сценарий выходит безоговорочно:

[ ! -d $SOURCE ] && echo "source directory $SOURCE not found" 
exit 1 

вероятно Вы имели в виду:

if [ ! -d $SOURCE ] 
then 
    echo "source directory $SOURCE not found" >&2 
    exit 1 
fi 

Или, может быть:

[ ! -d $SOURCE ] && { echo "source directory $SOURCE not found" >&2; exit 1; } 

Обратите внимание, что сообщения об ошибках должны быть отправлены на стандартную ошибку , а не стандартный выход. Неплохо было бы включить в сообщения имя сценария ($0); он помогает определить, какой сценарий сгенерировал/обнаружил проблему.

У вас возникли проблемы после проверки каталога $BACKUP.

Кроме того, как правило, заключите ссылки на переменные в двойных кавычках:

[ ! -d "$SOURCE" ] && { echo "source directory $SOURCE not found" >&2; exit 1; } 

(Вторая ссылка уже в двойных кавычках, конечно.)

+0

Привет, johathan Спасибо, много у меня есть один qustion здесь в чем смысл> & 2? оператор перенаправления> и как насчет следующего & 2? не могли бы вы мне объяснить? – viswa

+0

Обозначение '> & 2' перенаправляет стандартный вывод на стандартную ошибку, поэтому сообщения об ошибках отображаются на стандартной ошибке, как я уже говорил. –

+0

Еще раз спасибо Джонатан! теперь я полностью очищен около 0 1 2/Стандартный ввод/Стандартный вывод/Стандартная ошибка Ouput – viswa

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