The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Помогите доработать (парсинг), !*! Amiri, 14-Май-09, 10:22  [смотреть все]
Суть в следующем хочется сделать скрипт чтобы он проверял в файле один параметр например слово UP и выполнял какое нибудь действие
если слова UP нету  то ничего не выполнять
соответственно написал такой скриптик

#!/bin/sh
cat run.pid| grep -v '^ *#'| while read text; do
if [ $text = "UP" ];then
echo "yes"
else
echo "no"
fi
done

но получаеться что если перед UP поставить пробел то скрипт не отрабатывает или если несколько пробелов и завершаеться такой вот ерундой
./to.sh: test: argument expected
пример файла run.pid
-
cat run.pid

   1

  UP

   0

-
посоветуйте что я не так делаю

  • Помогите доработать (парсинг), !*! Pahanivo, 12:18 , 14-Май-09 (1)
    вы все делаете не так
    man sh
    man grep

  • Помогите доработать (парсинг), !*! phpcoder, 11:11 , 15-Май-09 (2)
    >#!/bin/sh
    >cat run.pid| grep -v '^ *#'| while read text; do
    >if [ $text = "UP" ];then
    >echo "yes"
    >else
    >echo "no"
    >fi
    >done

    Можно проще:

    if fgrep -qs 'UP' run.pid; then
      echo 'yes'
    else
      echo 'no'
    fi

    >но получаеться что если перед UP поставить пробел то скрипт не отрабатывает
    >или если несколько пробелов и завершаеться такой вот ерундой
    >./to.sh: test: argument expected

    Потому что в этом случае $text является пустым и ваш if выглядит так:

    if [ = "UP" ];then

    что неверно. Нужно взять $text в кавычки:

    if [ "$text" = "UP" ];then

    Советую привыкать "кавычить" переменные.





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

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