0403-057 Синтаксическая ошибка: `;' не ожидается

if 
[ -d patch/tempatch ];
then;
cd patch/tempatch/;

for i in `ls`;
do;
tar -xvf $i;
rm -f $i;
done;

for i in `ls`;
do;
cd $i;
cp -R files/* patch/SP02JUL11/files/;
cd ..;
rm -Rf $i;
done;

else;
echo "directory not found";
fi

Все команды в одну строку, разделенные знаком ";"

При выполнении выдает 0403-057 Syntax error: ; is not expected

может ли кто-нибудь помочь в этом?

Спасибо


person user3468019    schedule 27.03.2014    source источник
comment
Первым хорошим шагом было бы сделать отступ в коде. Я уверен, что тогда будет довольно легко выяснить, в чем проблема.   -  person fedorqui 'SO stop harming'    schedule 27.03.2014
comment
если вы создали код в Windows и перешли на Linux, выполните dos2unix myScript. Удачи.   -  person shellter    schedule 27.03.2014
comment
Я пишу caode в java и выполняю в системе UNIX.   -  person user3468019    schedule 27.03.2014


Ответы (1)


Не указано, какая оболочка интерпретирует этот скрипт... Судя по коду ошибки, я предполагаю, что это ksh...

Из сообщения об ошибке я предполагаю, что проблема в том, что после then, else, do ksh не принимает ;.

Однако просто из любопытства я только что установил ksh на свою Linux-систему. Версия "93u+ 2012-08-01". Ваш скрипт работает просто отлично, здесь нет синтаксических ошибок... Возможно, вы используете другую (возможно, более старую) версию оболочки или вообще другую оболочку... Вам обязательно следует указать, какую оболочку вы используете.. . :-).

person MarcoS    schedule 27.03.2014
comment
я использую только оболочку ksh - person user3468019; 27.03.2014
comment
ОС Red Hat Enterprise Linux Server версии 6.3 (Сантьяго) - person user3468019; 27.03.2014
comment
Это довольно странно, я использую Centos Release 6.5... Однако, если вы вводите каждую команду в отдельной строке (как я вижу из вашего кода), вы можете вообще избежать точек с запятой... Точки с запятой предназначены для разделения команд в той же строке... В частности, они запрашиваются перед do, then, else, но они запрещены после тех же команд... Я бы сказал ksh (но и bash тоже) довольно "привередлив"... :-) - person MarcoS; 27.03.2014