ошибка сценария оболочки - PullRequest
       0

ошибка сценария оболочки

0 голосов
/ 15 сентября 2011

У меня есть следующая строка в сценарии оболочки:

if [ -f /etc/init.d/tomcat6 && ps -C java|grep -qs 'java' ]; then

, который выдает следующую ошибку при попытке запустить:

line 12: [: missing `]'

У меня такое ощущение, что это проблема с кодировкой, так как я редактировал файл в Notepadd ++ на ПК с Windows XP, я убедился, что установил кодировку для кодирования в UTF-8 без спецификации, и что все окончания строк в стиле linux, но я все еще получаю эту ошибку.

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

Спасибо

Ответы [ 3 ]

2 голосов
/ 15 сентября 2011

Попробуйте

if [ -f /etc/init.d/tomcat6 ] && ps -C java | grep -qs 'java'; then
    ...
fi

[ в основном псевдоним для команды test.test ничего не знает об аргументе ps.В качестве альтернативы вы можете использовать test явно (только для пояснения синтаксиса):

if test -f /etc/init.d/tomcat6  && ps -C java | grep -qs 'java'; then
    ...
fi

Если вы используете [ вместо test, вы вынуждены завершить выражение с помощью ].

1 голос
/ 15 сентября 2011

Синтаксис для и : -a.

Вам нужно запустить ps -C java|grep -qs 'java', в настоящее время оно оценивается как выражение. Попробуйте это:

if [ -f /etc/init.d/tomcat6 -a $(ps -C java|grep -qs 'java') ]; then
1 голос
/ 15 сентября 2011

&& завершает вашу команду [.

if [ -f /etc/init.d/tomcat6 ] && ps -C java | grep -qs 'java'; then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...