The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"bash на solaris 8."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"bash на solaris 8."  +/
Сообщение от horse315 (ok) on 23-Авг-10, 13:35 
Есть такой скриптик для поиска файлов по содержимому (для примера 'bin'). Нас интересуют пути к этим файлам и мы их сохраняем в out.log.
Скрипт написан в убунту и там прекрасно работает.
А вот на серваке с солярисом никак не идет:

...
grep: can't open -c
-=TMP = =-
lens.sh: line 12: [: -gt: unary operator expected
NOT FOUND
...

Напрягает именно lens.sh: line 12: [: -gt: unary operator expected

САМ СКРИПТ >>


#!/bin/bash
A=`find ~`
echo "-=A"
echo "$A"
echo "A=-"

for FILE in $A;
do
    echo "-=file name: $FILE =-"
    TMP=`cat $FILE | grep 'bin' -c`
    echo "-=TMP = $TMP=-"
    if [ $TMP -gt 0 ];
    then
        echo "FOUND"
        echo "$FILE" >> ~/out.log
    else
        echo "NOT FOUND"
    fi
done

Что же не так)

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "bash на solaris 8."  +/
Сообщение от Andrey Mitrofanov on 23-Авг-10, 13:55 
>написан в убунту и там прекрасно работает.
>на серваке с солярисом никак
>Что же не так)

У Вас крутой позикс-юникс, то есть в нём не тот grep и нет bash-а.

Сравните вывод "grep --version" и "/bin/bash --version" на этих двух машинах.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "bash на solaris 8."  +/
Сообщение от i (??) on 23-Авг-10, 14:25 
ещё есть /usr/xpg4/bin/grep

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "bash на solaris 8."  +/
Сообщение от horse315 (ok) on 24-Авг-10, 09:03 
>>написан в убунту и там прекрасно работает.
>>на серваке с солярисом никак
>>Что же не так)
>
>У Вас крутой позикс-юникс, то есть в нём не тот grep и
>нет bash-а.
>
>Сравните вывод "grep --version" и "/bin/bash --version" на этих двух машинах.

Спасибо, мы тоже думали про посикс. Попробуем, посмотрим версии.


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

10. "bash на solaris 8."  +/
Сообщение от jd (??) on 25-Авг-10, 12:44 
Если гнутого грепа не найдёте, самое простое и быстрое исправление - заменить эту опцию "-c" в 10-й строке на "| wc -l".
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "bash на solaris 8."  +/
Сообщение от вуглускр on 24-Авг-10, 08:32 
>lens.sh: line 12: [: -gt: unary operator expected
>NOT FOUND
>...
>
>Напрягает именно lens.sh: line 12: [: -gt: unary operator expected

Это следствие того, что grep не понял -c.

На солярисе и /bin/sh и стандартный набор утилит несколько более стандартен, поэтому gnu-тые расширения не поддерживает. Более того, в /bin и /usr/bin обычно лежит нечто жутко урезанное (как тот же grep), а нормальные версии есть в /usr/xpg4/bin.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "bash на solaris 8."  +/
Сообщение от Andrey Mitrofanov on 24-Авг-10, 10:55 
>>lens.sh: line 12: [: -gt: unary operator expected
>Это следствие того, что grep не понял -c.

Нет, это сообщение о том, что таки "[" не понял ключа "-gt". "[" - builtin шела, не bash -- поэтому ключи не той системы.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "bash на solaris 8."  +/
Сообщение от Аноним (??) on 25-Авг-10, 06:42 
>>>lens.sh: line 12: [: -gt: unary operator expected
>>Это следствие того, что grep не понял -c.
>
>Нет, это сообщение о том, что таки "[" не понял ключа "-gt".
>"[" - builtin шела, не bash -- поэтому ключи не той системы.

Нуууу .... Ладно бы студень какой умничал, а то неофициальный баш-сенсей и так лохануться :)

Подумай медленно - если grep не разжевал -с и небыло _что_ он венёт? И во _что_ в таком случае развернётся тот if?

Подтведить не могу, к соляре старше 10-ки уже 4-ый месяц доступа не имею, всё - помер бобик (аллилуЙА!) Но опыт - не пропьёшь :)


/Warhead Wardick йа :)


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "bash на solaris 8."  +/
Сообщение от Аноним (??) on 25-Авг-10, 06:46 
Грёбанный мак!
исправить на: "если grep не разжевал -с _что_ он венрёт? "  
Неважно были или нет совпадения кстати :)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "bash на solaris 8."  +/
Сообщение от Аноним (??) on 25-Авг-10, 06:49 
>Грёбанный мак!
>исправить на: "если grep не разжевал -с _что_ он венрёт? "

"венрёт" :))))  Пойду напьюсь, а вы мужики если увидите что кто то кричит что мак - удобен - придушите его за меня :)


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "bash на solaris 8."  +/
Сообщение от Andrey Mitrofanov on 25-Авг-10, 09:15 
>>>>lens.sh: line 12: [: -gt: unary operator expected
>>>Это следствие того, что grep не понял -c.
>>
>>Нет, это сообщение о том, что таки "[" не понял ключа "-gt".
>>"[" - builtin шела, не bash -- поэтому ключи не той системы.
>
>Нуууу .... Ладно бы студень какой умничал, а то неофициальный баш-сенсей и
>так лохануться :)

Гы. Ж))) Ну, спасиб. Но хотелось бы оставить за собой :D возможность ошибаться.

> Подумай медленно - если grep не разжевал -с и небыло _что_ он венёт? И во _что_ в таком случае развернётся тот if?

Действительно, надо было то ли с качвычками разбираться, то ли типы выражений проверять.

> Подтведить не могу, к соляре старше 10-ки уже 4-ый месяц доступа не имею

Не солярка (и не совсем проверка, видимо):

$ sh
sh-3.2$ s=""
sh-3.2$ [ $s -gt 2 ] && echo 2
sh: [: -gt: ожидается использование унарного оператора
sh-3.2$ s=1
sh-3.2$ [ $s -gt 2 ] && echo 2
sh-3.2$ s=""
sh-3.2$ [ "$s" -gt 2 ] && echo 2
sh: [: : integer expression expected
sh-3.2$ exit
$ sh --version
GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
$ _

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

11. "bash на solaris 8."  +/
Сообщение от meantraitor on 25-Авг-10, 14:18 
>
>Это следствие того, что grep не понял -c.
>
>На солярисе и /bin/sh и стандартный набор утилит несколько более стандартен, поэтому
>gnu-тые расширения не поддерживает. Более того, в /bin и /usr/bin обычно
>лежит нечто жутко урезанное (как тот же grep), а нормальные версии
>есть в /usr/xpg4/bin.

Тем не менее, даже /usr/bin/grep на восьмой соляре понимает -c

А еще у grep есть ключик -l, более полезный в данной ситуации:

for file in `find ~`; do
  grep -l 'bin' $file
done >> out.log

А то и того проще:

(find ~ |xargs grep -l bin ) >> out.log

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру