Re: не срабатывает условие в bash
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
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
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
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
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
Есть скрипт: 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
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
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
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
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
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
dimas dimas...@ya.ru writes: нафига [[двойные]] скобки? как-то мне [обычных] всегда хватает... http://tldp.org/LDP/abs/html/testconstructs.html#DBLBRACKETS pgpeIex8mPQIG.pgp Description: PGP signature