Здравствуйте!Нужно сконструировать условие в случае пустого значения $FILE, не могу обозначить это самое пустое значение или пустой результат говоря проще. Статус тут всегда будет успешным поэтому определить так невозможно.
for FILE in `find /user/ -cmin -$1`;
if [ "$FILE" = пустое значение ]
then
done
echo "Files not found" exit
else
do
-----------------Помогите пожалуйста.
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"
doneexit 0
[ "$FILE" = "" ]
>Помогите пожалуйста.man test (ключ -z)
$ 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
$ _
а вот и йа :)>$ 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
(кто скажет смысл второго варианта вместо первого?)они ориентируются на максимальную переносимость скрипта, а значит их примеру можно следовать (не бездумно канешна) :)
>Дядьки из autoconf для configure используют:
>test -z "$X"
>или
>"x$VAR" = x
>(кто скажет смысл второго варианта вместо первого?)
>
>они ориентируются на максимальную переносимость скрипта, а значит их примеру можно следовать
>(не бездумно канешна) :)Было бы интересно увидеть пример с пояснениями, когда второе работает, а первое - нет.
А то ведь первое читабельнее. Не хочется писать через зад только потому,
что кто-то пустил слух о том, что якобы так портабельнее.
>[оверквотинг удален]
> 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 для папок.
>И потом, или я торможу или... Как может вывод комманды find быть
>пустым?во-во))
не тормозишь, тут эта проверка вообще не нужна (find ессно не возвращает пустых значений) так что можно и for и while по вкусу.
>>И потом, или я торможу или... Как может вывод комманды find быть
>>пустым?
>
>во-во))
>не тормозишь, тут эта проверка вообще не нужна (find ессно не возвращает
>пустых значений) так что можно и for и while по вкусу.
>Хм, ну а если по условию файлы не нашлись, тогда какой будет вывод если не пустой?
>Хм, ну а если по условию файлы не нашлись, тогда какой будет
>вывод если не пустой?Пустой, и for не сделает ни одной итерации.
>>Хм, ну а если по условию файлы не нашлись, тогда какой будет
>>вывод если не пустой?
>
>Пустой, и for не сделает ни одной итерации.Да, for то не сделает, просто у меня там ещё релоад одного сервиса прописан после этого, каждый раз он будет перезагружаться если не поставить условие.