Неожиданная ошибка оператора

Что не так в моем коде?

#!/bin/sh LOOK_FOR="$1" for i in `find $2 -name "*jar"`; do echo "Looking in $i ..." #jar tvf $i | grep $LOOK_FOR > /dev/null jar tvf "$i" | grep "$LOOK_FOR" if [ $? == 0 ] ; then echo "==> Found \"$LOOK_FOR\" in $i" fi done #line 13 

Вывод

 [email protected]:$ sh lookjar.sh org/apache/axis/message/addressing/EndpointReference /media/0C06E20B06E1F61C/uengine/uengine Looking in /media/0C06E20B06E1F61C/uengine/uengine/defaultcompany/build/uengine_settings.jar ... [: 13: 1: unexpected operator Looking in /media/0C06E20B06E1F61C/uengine/uengine/defaultcompany/WebContent/uengine-web/lib/FCKeditor/WEB-INF/lib/commons-fileupload.jar ... [: 13: 1: unexpected operator Looking in /media/0C06E20B06E1F61C/uengine/uengine/defaultcompany/WebContent/uengine-web/lib/FCKeditor/WEB-INF/lib/FCKeditor-2.3.jar ... [: 13: 1: unexpected operator Looking in /media/0C06E20B06E1F61C/uengine/uengine/defaultcompany/WebContent/uengine-web/processmanager/signedmetaworks.jar ... [: 13: 1: unexpected operator Looking in /media/0C06E20B06E1F61C/uengine/uengine/hsqldb/lib/hsqldb.jar ... [: 13: 1: unexpected operator Looking in /media/0C06E20B06E1F61C/uengine/uengine/hsqldb/lib/servlet.jar ... [: 13: 1: unexpected operator Looking in /media/0C06E20B06E1F61C/uengine/uengine/src/lib/commons-discovery.jar ... [: 13: 1: unexpected operator Looking in /media/0C06E20B06E1F61C/uengine/uengine/src/lib/google.jar ... [: 13: 1: unexpected operator Looking in /media/0C06E20B06E1F61C/uengine/uengine/src/lib/jxl.jar ... 

Вам нужно использовать = вместо == в [ $? == 0 ] [ $? == 0 ] .

Вы должны изменить это на:

 if [ $? -eq 0 ]; then ... 

-eq делает числовое сравнение.

Вы также можете воспользоваться тем фактом, что в оболочке возвращаемое значение 0 считается успешным и записывает ваш код следующим образом:

 if jar tvf "$i" | grep "$LOOK_FOR"; then ... 
 #!/bin/sh LOOK_FOR="$1" find $2 -name "*jar"`| while read -r file echo "Looking in $file ..." jar tvf "$file" | grep "$LOOK_FOR" if [ $? -eq 0 ] ; then echo "==> Found \"$LOOK_FOR\" in $file" fi done 

Пытаться:

 if [[ $? == 0 ]]; then echo "==> Found \"$LOOK_FOR\" in $i" fi 
Interesting Posts

Записывает ли Windows 7 все копии файлов?

Как заставить Git «забыть» о файле, который был отслежен, но теперь находится в .gitignore?

Java OutOfMemoryError странное поведение

Нарушение синтаксиса строки электронной почты Outlook 2010 для встроенных ответов

AlertDialog с пользовательским представлением: изменение размера, чтобы обернуть содержимое представления

Как получить разницу между двумя массивами объектов в JavaScript

Обмен двумя переменными без использования временной переменной

mpi: блокировка против неблокирующего

Формат даты и времени в asp.net mvc 4

Просмотр запланированных записей удаленно

Динамическое изменение URL-адреса URL-адреса веб-службы WCF через файл конфигурации

Должен ли я всегда отключать обработчики событий в методе Dispose?

IEnumerable не имеет метода Count

Подключение к настройкам прокси-сервера Firefox

Ошибка при установке программы на Windows 7 64-bit

Давайте будем гением компьютера.