Неожиданная ошибка оператора
Что не так в моем коде?
#!/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 ...
- Как перебирать имена файлов, возвращаемые find?
- Проверьте, находится ли массив внутри списка в lisp
- найти файлы старше X дней в bash и удалить
- Как использовать '-prune' вариант 'find' в sh?
- Чистый способ найти объекты ActiveRecord по идентификатору в указанном порядке
- Как рекурсивно найти последний измененный файл в каталоге?
- Excel: поиск списка строк в определенной строке с использованием формул массива?
- Векторы, структуры и std :: find
- Пакет / Поиск и редактирование строк в TXT-файле
- find: отсутствующий аргумент для -exec
- jQuery выбирает атрибут с использованием операторов AND и OR
Вам нужно использовать =
вместо ==
в [ $? == 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