Re: не срабатывает условие в bash

2014-03-28 Пенетрантность Vladimir Skubriev
  27.03.2014, 16:28, "Vladimir Skubriev" vladi...@skubriev.ru: Есть скрипт:         ENABLE_SYSLOG=true        test -r /etc/default/inotifywait  . /etc/default/inotifywait || exit 99        test -d $INOTIFY_FOLDER || exit 100         inotifywait -mrq -e ATTRIB --format '%w%f' "$INOTIFY_FOLDER" | while IFS= read -r FILE        do                if [ -f $FILE ];then                        # If file                        if [ `stat -c %a $FILE` != "664" ] ;then                        CHMOD_LOG=$(chmod -v 664 "$FILE");  [[ -f $FILE ]]  logger -t inotifywait -p user.info "$CHMOD_LOG"                         fi                else                        # If directory                        if [ `stat -c %a $FILE` != "2775" ] ;then                        CHMOD_LOG=$(chmod -v 2775 "$FILE");  [[ "$ENABLE_SYSLOG" = true ]]  logger -t inotifywait -p user.info "$CHMOD_LOG"                         fi                fi        done Не получается выполнить logger по условию: [[ -f $FILE ]]  или [[ "$ENABLE_SYSLOG" = true ]]  Почему logger не срабатывает? Спасибо!--Faithfully yours, Vladimir Skubriev  Подсказали на stackoverflow ) "$ENABLE_SYSLOG"  logger -t inotifywait -p user.info "$CHMOD_LOG"  --Faithfully yours, Vladimir Skubriev 

Re: не срабатывает условие в bash

2014-03-28 Пенетрантность Artem Chuprina
Vladimir Skubriev - Debian-russian  @ Fri, 28 Mar 2014 12:35:51 +0400:

 VS Подсказали на stackoverflow )
 VS  
 VS $ENABLE_SYSLOG  logger -t inotifywait -p user.info $CHMOD_LOG 

С этим осторожно.  Это существенно не то же самое.  Если ты, скажем,
решишь заменить true на yes, эффект будет для тебя крайне
неожиданным, а если на да, то предыдущим.


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/87fvm263va@wizzle.ran.pp.ru



Re: не срабатывает условие в bash

2014-03-28 Пенетрантность Dmitrii Kashin
Artem Chuprina r...@ran.pp.ru writes:

 Vladimir Skubriev - Debian-russian  @ Fri, 28 Mar 2014 12:35:51 +0400:

  VS Подсказали на stackoverflow )
  VS  
  VS $ENABLE_SYSLOG  logger -t inotifywait -p user.info $CHMOD_LOG 

 С этим осторожно.  Это существенно не то же самое.  Если ты, скажем,
 решишь заменить true на yes, эффект будет для тебя крайне
 неожиданным, а если на да, то предыдущим.

Артём, а эта ситуация вообще описана в man bash? Я как-то не понимаю,
почему оно работает. Вот первое выражение, оно как интерпретируется в
контексте булевой операции ?


pgp_rUwhxdLW9.pgp
Description: PGP signature


Re: не срабатывает условие в bash

2014-03-28 Пенетрантность Eugene Berdnikov
On Fri, Mar 28, 2014 at 10:59:19PM +0400, Dmitrii Kashin wrote:
 Artem Chuprina r...@ran.pp.ru writes:
 
  Vladimir Skubriev - Debian-russian  @ Fri, 28 Mar 2014 12:35:51 +0400:
 
   VS Подсказали на stackoverflow )
   VS
   VS $ENABLE_SYSLOG  logger -t inotifywait -p user.info $CHMOD_LOG 
 
  С этим осторожно.  Это существенно не то же самое.  Если ты, скажем,
  решишь заменить true на yes, эффект будет для тебя крайне
  неожиданным, а если на да, то предыдущим.
 
 Артём, а эта ситуация вообще описана в man bash?

 Сомневаюсь, что в руководстве по обращению с винтовкой подробно мусолятся
 способы прострела собственной ноги с иллюстрациями. :)

 Я как-то не понимаю,
 почему оно работает. Вот первое выражение, оно как интерпретируется в
 контексте булевой операции ?

 Как обычно: берётся exit status от выполненной команды и применяется.

 Команда в данном случае оказывается true, и совершенно случайно она
 совпадает с. Если команда окажется yes, то произойдёт другое случайное
 совпадение, но в результате будет не отстрел ноги, а повешенье за яйца.
 А установка ENABLE_SYSLOG в значение 1 приведёт к выносу мозга. :)))
-- 
 Eugene Berdnikov


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140328200234.go31...@sie.protva.ru



Re: не срабатывает условие в bash

2014-03-28 Пенетрантность Dmitrii Kashin
Eugene Berdnikov b...@protva.ru writes:

 On Fri, Mar 28, 2014 at 10:59:19PM +0400, Dmitrii Kashin wrote:
 Artem Chuprina r...@ran.pp.ru writes:
 
  Vladimir Skubriev - Debian-russian  @ Fri, 28 Mar 2014 12:35:51 +0400:
 
   VS Подсказали на stackoverflow )
   VS
   VS $ENABLE_SYSLOG  logger -t inotifywait -p user.info $CHMOD_LOG 

 Я как-то не понимаю,
 почему оно работает. Вот первое выражение, оно как интерпретируется в
 контексте булевой операции ?

  Как обычно: берётся exit status от выполненной команды и применяется.

  Команда в данном случае оказывается true, и совершенно случайно она
  совпадает с. Если команда окажется yes, то произойдёт другое случайное
  совпадение, но в результате будет не отстрел ноги, а повешенье за яйца.
  А установка ENABLE_SYSLOG в значение 1 приведёт к выносу мозга. :)))

Понял! Спасибо. :)


pgpvdwrydlTZY.pgp
Description: PGP signature


не срабатывает условие в bash

2014-03-27 Пенетрантность Vladimir Skubriev
 Есть скрипт:         ENABLE_SYSLOG=true        test -r /etc/default/inotifywait  . /etc/default/inotifywait || exit 99        test -d $INOTIFY_FOLDER || exit 100         inotifywait -mrq -e ATTRIB --format '%w%f' "$INOTIFY_FOLDER" | while IFS= read -r FILE        do                if [ -f $FILE ];then                        # If file                        if [ `stat -c %a $FILE` != "664" ] ;then                        CHMOD_LOG=$(chmod -v 664 "$FILE");  [[ -f $FILE ]]  logger -t inotifywait -p user.info "$CHMOD_LOG"                         fi                else                        # If directory                        if [ `stat -c %a $FILE` != "2775" ] ;then                        CHMOD_LOG=$(chmod -v 2775 "$FILE");  [[ "$ENABLE_SYSLOG" = true ]]  logger -t inotifywait -p user.info "$CHMOD_LOG"                         fi                fi        done Не получается выполнить logger по условию: [[ -f $FILE ]]  или [[ "$ENABLE_SYSLOG" = true ]]  Почему logger не срабатывает? Спасибо!--Faithfully yours, Vladimir Skubriev 

Re: не срабатывает условие в bash

2014-03-27 Пенетрантность Artem Chuprina
Vladimir Skubriev - Debian-russian  @ Thu, 27 Mar 2014 16:27:48 +0400:

 VS  
 VS Есть скрипт:
 VS  
 VS         ENABLE_SYSLOG=true
 VS         test -r /etc/default/inotifywait  . /etc/default/inotifywait || 
exit 99
 VS         test -d $INOTIFY_FOLDER || exit 100
 VS  
 VS         inotifywait -mrq -e ATTRIB --format '%w%f' $INOTIFY_FOLDER | 
while IFS= read -r FILE
 VS         do
 VS                 if [ -f $FILE ];then
 VS                         # If file
 VS                         if [ `stat -c %a $FILE` != 664 ] ;then
 VS                         CHMOD_LOG=$(chmod -v 664 $FILE);  [[ -f $FILE ]] 
 logger -t inotifywait -p user.info $CHMOD_LOG 
 VS                         fi
 VS                 else
 VS                         # If directory
 VS                         if [ `stat -c %a $FILE` != 2775 ] ;then
 VS                         CHMOD_LOG=$(chmod -v 2775 $FILE);  [[ 
$ENABLE_SYSLOG = true ]]  logger -t inotifywait -p user.info $CHMOD_LOG 
 VS                         fi
 VS                 fi
 VS         done
 VS  
 VS Не получается выполнить logger по условию:
 VS  
 VS [[ -f $FILE ]] 
 VS  
 VS или
 VS  
 VS [[ $ENABLE_SYSLOG = true ]] 
 VS  
 VS Почему logger не срабатывает?

Потому что у $FILE уже подходящие права, и мы не попадаем в эту ветку if?


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/87a9cb7nuy@wizzle.ran.pp.ru



Re: не срабатывает условие в bash

2014-03-27 Пенетрантность Dmitrii Kashin
Vladimir Skubriev vladi...@skubriev.ru writes:

 Есть скрипт:
 ENABLE_SYSLOG=true
 test -r /etc/default/inotifywait  . /etc/default/inotifywait || exit
 99
 test -d $INOTIFY_FOLDER || exit 100
 inotifywait -mrq -e ATTRIB --format '%w%f' $INOTIFY_FOLDER | while
 IFS= read -r FILE
 do
 if [ -f FILE ]
 # if file
 then
 if [ `stat -c %a $FILE` != 664 ]
 then
   CHMOD_LOG=$(chmod -v 664 $FILE); [[ -f $FILE ]]  logger -t 
 inotifywait -p user.info $CHMOD_LOG 
 fi
 else
 # If directory
 if [ `stat -c %a $FILE` != 2775 ] 
 then
   CHMOD_LOG=$(chmod -v 2775 $FILE); [[ $ENABLE_SYSLOG = true ]]  
 logger -t inotifywait -p user.info $CHMOD_LOG 
 fi
 fi
 done
 Не получается выполнить logger по условию:
 [[ -f $FILE ]] 
 или
 [[ $ENABLE_SYSLOG = true ]] 
 Почему logger не срабатывает?
 Спасибо!
 --
 Faithfully yours,
 Vladimir Skubriev

Владимир, есть проблема с Вашим скриптом, связанная с тем, что он не
полный, и протестить его у себя мы не можем.

Ничего криминального в нём не вижу, за исключением одного. Если файл был
удалён, то inotifywait не выведет ли его имя? Если выведет, то попадёте
в ветку If directory, что нехорошо.

По вашему же вопросу, хочется уточнить. А перед запуском скрипта Вы
права на директорию меняете?

PS: Ну и отступы нормальные расставить не помешало бы.


pgpRlkuHnzXEy.pgp
Description: PGP signature


Re: не срабатывает условие в bash

2014-03-27 Пенетрантность dimas
         inotifywait -mrq -e ATTRIB --format '%w%f' $INOTIFY_FOLDER | while
 IFS= read -r FILE do
во-первых, пропущены ; между условием и командой, командой и do. help while,
см. формат.

                         CHMOD_LOG=$(chmod -v 664 $FILE);  [[ -f $FILE ]] 
 logger -t inotifywait -p user.info $CHMOD_LOG  fi
нафига [[двойные]] скобки? как-то мне [обычных] всегда хватает...
еще непонятно, зачем  в конце. выплюнуть строчку в лог - процесс
одномоментный, чего плодить ради этого лишние сущности?

 Почему logger не срабатывает?
вообще, я в таких случах в подозрительные участки добавляю дебаг-строки вида
echo вот мы вошли в какой-то цикл, или еще что 2
сразу наглядно видно, отработало какое-то условие, или нет.


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140327185438.59583...@ulf.tvoe.tv



Re: не срабатывает условие в bash

2014-03-27 Пенетрантность Alexander Galanin
On Thu, 27 Mar 2014 16:27:48 +0400
Vladimir Skubriev vladi...@skubriev.ru wrote:

 Не получается выполнить logger по условию:
 …
 Почему logger не срабатывает?

Запуск скрипта через bash -x или set -x где-нибудь в начале скрипта
сразу снимет все вопросы.

-- 
Alexander Galanin


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/20140327211526.be11ddd6c2c57fbbb3dce...@galanin.nnov.ru



Re: не срабатывает условие в bash

2014-03-27 Пенетрантность Artem Chuprina
Alexander Galanin - debian-russian@lists.debian.org  @ Thu, 27 Mar 2014 
21:15:26 +0400:

  Не получается выполнить logger по условию:
  …
  Почему logger не срабатывает?

 AG Запуск скрипта через bash -x или set -x где-нибудь в начале скрипта
 AG сразу снимет все вопросы.

Это если его можно вручную запустить, или хотя бы с видимым stderr.
Впрочем, если предварительно stderr перенаправить
(exec 2/path/to/file), то может, и сработает...


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/871txn7e21@wizzle.ran.pp.ru



Re: не срабатывает условие в bash

2014-03-27 Пенетрантность Dmitrii Kashin
dimas dimas...@ya.ru writes:

 нафига [[двойные]] скобки? как-то мне [обычных] всегда хватает...

http://tldp.org/LDP/abs/html/testconstructs.html#DBLBRACKETS


pgpeIex8mPQIG.pgp
Description: PGP signature