2014-03-27 9 views
0
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 Ошибка синтаксиса: `; ' не ожидается

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

кто может помочь в этом?

Спасибо

+0

Первым хорошим шагом будет отступ от кода. Я уверен, тогда будет довольно легко узнать, где проблема. – fedorqui

+0

, если вы создали код в Windows и переместились в linux, выполните 'dos2unix myScript'. Удачи. – shellter

+0

Я пишу caode в java и выполняю в системе UNIX – user3468019

ответ

1

Это не указано, какая оболочка interpereting этот сценарий ... От кода ошибки я предполагаю, что это КШ ...

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

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

+0

Я использую только оболочку ksh – user3468019

+0

os Red Hat Enterprise Linux Server release 6.3 (Santiago) – user3468019

+0

Это довольно странно, я на Centos Release 6.5 ... Однако если вы вводите каждую команду на другой строке (как я вижу из вашего кода), вы можете избежать совпадений с точкой с запятой ... Точки с запятой предназначены для разделения команд на одной строке ... В частности, они * запрошены * перед тем, как 'do ',' then', 'else', но они * запрещены * после тех же команд ... Я бы сказал, что ksh (но bash тоже) довольно« разборчив »... :-) – MarcoS

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

  • Нет связанных вопросов^_^