Суть в следующем хочется сделать скрипт чтобы он проверял в файле один параметр например слово 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.pid1
UP
0
-
посоветуйте что я не так делаю
вы все делаете не так
man sh
man grep
>#!/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
Советую привыкать "кавычить" переменные.