2016-08-14 2 views
-1

Я в корневом каталоге, создаю скрипт, который приведет меня от root> Главная> Журналы и внутренние журналы удаляют 3 файла журнала. Сценарий проверяет, существуют ли они, если ДА его удалит. Я столкнулся с некоторыми проблемами синтаксиса, если вы могли бы помочь.Каталог смены сценариев Unix

Благодаря

Мой код:

#!/bin/sh 
cd Home/Log 
if [ -e error1.log ] 
then 
rm error1 
fi 
if [ -e error2.log ] 
then 
rm error1 
fi 
if [ -e error3.log ] 
then 
rm error1 
fi 

, когда я исполняю файл в корневом каталоге, используя ./delete здесь то, что я получаю как ошибки:

$ ./delete 
: No such file or directoryme/Log 
./delete: line 14: syntax error near unexpected token `fi' 
+1

Вы уверены, что существует такой путь «Главная/Журнал» - это текущий каталог при запуске скрипта? –

+0

да я сам создал его – Johnny

+1

Что произойдет, если вы запустите команды по одному в оболочке вручную? –

ответ

1

Я в корневом каталоге

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

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

#!/bin/sh 
dir=/Home/Log 
rm -f ${dir}/error1.log ${dir}/error2.log ${dir}/error2.log 

или

#!/bin/sh 
dir=/Home/Log 
rm -f ${dir}/error{1,2,3}.log 

или

#!/bin/sh 
set -e 
cd /Home/Log && rm -f error1.log error2.log error2.log 

Для чего-либо нетривиального, set -e является вашим другом. В вашем примере в сценарии ничего не происходит. То, что вы не хотите, это продолжать идти мышления вы изменили каталоги, но не сделали, и завершите писать что-то, чего вы не намеревались. Многие так много потеряли.

+0

Спасибо, что вы это разработали. – Johnny

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