The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
bash на solaris 8., !*! horse315, 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

Что же не так)

  • bash на solaris 8., !*! Andrey Mitrofanov, 13:55 , 23-Авг-10 (1)
    >написан в убунту и там прекрасно работает.
    >на серваке с солярисом никак
    >Что же не так)

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

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

  • bash на solaris 8., !*! вуглускр, 08:32 , 24-Авг-10 (3)
    >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.

    • bash на solaris 8., !*! Andrey Mitrofanov, 10:55 , 24-Авг-10 (5)
      >>lens.sh: line 12: [: -gt: unary operator expected
      >Это следствие того, что grep не понял -c.

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

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

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

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

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


        /Warhead Wardick йа :)


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

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

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


        • bash на solaris 8., !*! Andrey Mitrofanov, 09:15 , 25-Авг-10 (9)
          >>>>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.
          $ _

    • bash на solaris 8., !*! meantraitor, 14:18 , 25-Авг-10 (11)
      >
      >Это следствие того, что 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




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

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