URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7864
[ Назад ]

Исходное сообщение
"Определение пустого значения"

Отправлено STX , 29-Янв-09 01:39 
Здравствуйте!

Нужно сконструировать условие в случае пустого значения $FILE, не могу обозначить это самое пустое значение или пустой результат говоря проще. Статус тут всегда будет успешным поэтому определить так невозможно.

for FILE in `find /user/ -cmin -$1`;
  if [ "$FILE" = пустое значение ]
   then
  done
  echo "Files not found" exit  
   else
    do
-----------------

Помогите пожалуйста.


Содержание

Сообщения в этом обсуждении
"Определение пустого значения"
Отправлено Serge , 29-Янв-09 05:14 
for FILE in `find /user/ -cmin -$1`;
do
  if [ "x$FILE" = "x" ]
  then
       echo "Files not found"
       exit 1
  else
       echo "Files has been found"
done

exit 0


"Определение пустого значения"
Отправлено const86 , 29-Янв-09 11:28 
[ "$FILE" = "" ]

"Определение пустого значения"
Отправлено phpcoder , 29-Янв-09 08:40 
>Помогите пожалуйста.

man test (ключ -z)



"+1"
Отправлено Andrey Mitrofanov , 29-Янв-09 12:12 
$ X=
$ [ -z "$X" ] && echo Да || echo Нет
Да
$ X=2
$ [ -z "$X" ] && echo Да || echo Нет
Нет
$ # "проверяем" позикс-совместимость! %)
$ sh
sh-3.1$ X=
sh-3.1$ [ -z "$X" ] && echo Да || echo Нет
Да
sh-3.1$ X=3
sh-3.1$ [ -z "$X" ] && echo Да || echo Нет
Нет
sh-3.1$ exit
$ _

"+1"
Отправлено vic , 29-Янв-09 13:37 
а вот и йа :)

>$ X=
>$ [ -z "$X" ] && echo Да || echo Нет
>Да
>$ X=2
>$ [ -z "$X" ] && echo Да || echo Нет
>Нет

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

>$ # "проверяем" позикс-совместимость! %)
>$ sh
>sh-3.1$ X=
>sh-3.1$ [ -z "$X" ] && echo Да || echo Нет
>Да
>sh-3.1$ X=3
>sh-3.1$ [ -z "$X" ] && echo Да || echo Нет
>Нет
>sh-3.1$ exit
>$ _

будь бдителен :) , sh в линухе реализован через bash и его поведение отличается от поведения sh в солярке, бсде и т.п. (к примеру, без кавычек в линуховом sh условие -z проходит, а в соляровском - ошибко), т.е. проверка на позиксность м.б. не совсем корректной :)

зы
Дядьки из autoconf для configure используют:
test -z "$X"
или
"x$VAR" = x
(кто скажет смысл второго варианта вместо первого?)

они ориентируются на максимальную переносимость скрипта, а значит их примеру можно следовать (не бездумно канешна) :)


"+1"
Отправлено const86 , 29-Янв-09 14:53 
>Дядьки из autoconf для configure используют:
>test -z "$X"
>или
>"x$VAR" = x
>(кто скажет смысл второго варианта вместо первого?)
>
>они ориентируются на максимальную переносимость скрипта, а значит их примеру можно следовать
>(не бездумно канешна) :)

Было бы интересно увидеть пример с пояснениями, когда второе работает, а первое - нет.
А то ведь первое читабельнее. Не хочется писать через зад только потому,
что кто-то пустил слух о том, что якобы так портабельнее.


"Определение пустого значения"
Отправлено Arpo , 29-Янв-09 12:55 
>[оверквотинг удален]
> for FILE in `find /user/ -cmin -$1`;
>  if [ "$FILE" = пустое значение ]
>   then
>  done
>  echo "Files not found" exit
>   else
>    do
>-----------------
>
>Помогите пожалуйста.

А почему бы не исползовать конструкцию while вместо for ???

find /user/ -cmin -$1|while read $FILE
do
     echo "xxx"
done

Если значения есть работаем, нет не работаем?
И потом, или я торможу или... Как может вывод комманды find быть пустым? Если фаил нашелся значить он есть.А если например нужно узнать фаил это или папка, то man test а именно ключ -f для фаилов и -d для папок.



"Определение пустого значения"
Отправлено vic , 29-Янв-09 13:51 
>И потом, или я торможу или... Как может вывод комманды find быть
>пустым?

во-во))
не тормозишь, тут эта проверка вообще не нужна (find ессно не возвращает пустых значений) так что можно и for и while по вкусу.


"Определение пустого значения"
Отправлено STX , 29-Янв-09 21:46 
>>И потом, или я торможу или... Как может вывод комманды find быть
>>пустым?
>
>во-во))
>не тормозишь, тут эта проверка вообще не нужна (find ессно не возвращает
>пустых значений) так что можно и for и while по вкусу.
>

Хм, ну а если по условию файлы не нашлись, тогда какой будет вывод если не пустой?


"Определение пустого значения"
Отправлено const86 , 29-Янв-09 23:12 
>Хм, ну а если по условию файлы не нашлись, тогда какой будет
>вывод если не пустой?

Пустой, и for не сделает ни одной итерации.


"Определение пустого значения"
Отправлено STX , 30-Янв-09 21:28 
>>Хм, ну а если по условию файлы не нашлись, тогда какой будет
>>вывод если не пустой?
>
>Пустой, и for не сделает ни одной итерации.

Да, for то не сделает, просто у меня там ещё релоад одного сервиса прописан после этого, каждый раз он будет перезагружаться если не поставить условие.