Видео ролики бесплатно онлайн

Смотреть красотки видео

Официальный сайт e-rus 24/7/365

Смотреть видео бесплатно


dfx 16.07.10 20:36 # +0
Хм.. очень кстати. Как-раз занялся написанием таких скриптов для свежеустановленного дебиана %)
wilful 16.07.10 20:37 # +0
Дэвид Тейнсли - Linux и Unix. Программирование в SHELL
Советую для начала
dfx 16.07.10 20:41 # +0
Ну не для начала, если что... %) в линуксе уже не первый год. Просто некоторые вещи так и остаются в теории, а как до практики доходит - далеко не все и не всегда вспоминаются... Всё из того, что ты написал — известно мне давно, но вот про некоторые вещи вспомнилось только сейчас, а что-то вообще в голову не приходило применить здесь... :)
wilful 16.07.10 20:52 # +0
Надеюсь не обидел, я тебя не знаю =) Там же в топиках я брякнул, что напишу, вот написал..
dfx 16.07.10 21:00 # +0
Да не парься ;)
Username 16.07.10 20:43 # +1
be root?

whoami
It work?

команда && echo 'Да'
It is you?!

Не понял, чо собирался проверять этим.

Я можт не понял чо, поясни. И английский, он оооочень у тебя ошибочен :)
dfx 16.07.10 20:47 # +-1
Не придирайся %))
команда && echo 'Да'

Не всегда удобно, особенно когда после "команда" надо будет ещё пяток команд, с проверкой параметров и прочего.

whoami

ну вот велика разница - if whoami или if "$LOGNAME" :)
Sokoloff 16.07.10 21:33 # +2
Про whoami и $LOGNAME
В системе может быть несколько пользователей с нулевым UID, например во FreeBSD кроме root, есть еще toor. Поэтому более универсально:
if [ `id -u` -eq 0 ]; then # root
или
if [ `id -u` -ne 0 ]; then # Не root

dfx 16.07.10 21:47 # +0
Вот тут - плюс. По id идентифицировать - намного лучше...
wilful 16.07.10 20:48 # +1
Та епт, тут нашел к чему придраться...
Пишу в тяпницу со всеми последствиями...
Кароче, как ты и продемонстрировал - вариантов исполнения куча! Но как бэ говорим о том, что нужно использовать в скрипте.
  • С "whoami" сильно смысл изменится?

  • команда && echo 'Да' else как, слабо?

  • Проверка на файл, диру, есть, нету, где, почем... читай между строк

kstep 17.07.10 00:18 # +1
1
2
3

test -f $AFILE && echo "Да" || echo "Нет"
 


Вот тебе аналог Сишного ?:.
dfx 17.07.10 00:27 # +0
Ну сделай-ка мне удобный и понятный аналог bash-евского, в одну строку со своими "&&" и "||"
1
2
3
4
5
6
7
8
9
10
11
if test -f $AFILE
then
    if test -f $BFILE
    then
        if test -f $CFILE
            exec $command
        else
            exec $command2
        fi
    fi
fi

kstep 17.07.10 00:33 # +0
А для таких структур это выражение и не нужно.
Просто иногда проще/быстрее написать простую проверку в одну строчку,
а если что сложнее нужно с вложениями, то тут да, не спорю.

Это как Си: в принципе много вложенных if-ов можно заменить тетрарным оператором ?:, но не нужно, т.к. он не для того нужен.
kstep 17.07.10 00:34 # +0
Если чё, это ответ wilfulу по поводу
команда && echo 'Да' else как, слабо?
. Так вот: не слабо.
dfx 17.07.10 00:52 # +0
Ну, если я правильно понял, этот пост обращён именно для расширения кругозора... Про test -f $AFILE && echo "Да" || echo "Нет" можно найти по первому же google-запросу... Про остальное - придётся разобрать много мусора...
Username 17.07.10 00:58 # +0
В кавычки добавляй каждый вложенный условный переход, да и все.
wilful 17.07.10 07:24 # +0
Отлично, спасибо за намек. Я не программист, не знаю тонкости, но теперь буду искать подобные конструкции для однострочных скриптов.
kstep 17.07.10 12:29 # +0
Дык такое много где есть:

Perl/C/C++/много ещё где:
условие ? если-да : если-нет

Python:
если-да if условие else если-нет

Lua:
условие and если-да or если-нет

Bash уже показал =)
wilful 16.07.10 20:51 # +0
И я не собирался, это зарисовки с моего скрипт-бэкапа хоум конфигов =)
wilful 16.07.10 20:57 # +0
И английский, он оооочень у тебя ошибочен :)

Если напишешь как правильно, я тебя не покараю
dfx 16.07.10 21:07 # +2
It work? — Is it works?
It is you?! — Is it you?!
There is something? — Is there something?

Как-то так, в общем... %) Но это всё не существенно, для "не педантов" :) Смысл и суть все и так уловили...
kstep 17.07.10 00:20 # +1
Вообще-то так:
Is it works? => Does it work?
dfx 17.07.10 00:28 # +0
Вообще, оба варианта допустимы... :) Там есть свои тонкости в этом, в правильном английском... Но в разговорном используются оба варианта..
kstep 17.07.10 00:20 # +0
You are assured? => Are you sure?
sugar 17.07.10 00:48 # +1
команда && echo 'Да'

В коротких скриптах вполне годится, особенно в однострочниках, или в кронтабе удобно так писать (проверка_командой && команда). А в больших скриптах лучше делать, как автор советует, а то через полгода понять как твой скрипт работает бывает ой как непросто, поэтому лучше сразу приводить код к классическому виду.
sugar 17.07.10 00:54 # +3
Статья для новичков хорошая, но вот я для себя понял, что для больших скриптов (> 100 строк кода) лучше юзать что-нибудь типа перла или питона. Есть определенные вещи, которые в шелле решать приходится не иначе, чем перанально.
Username 17.07.10 00:59 # +0
перанально

в мемориз!
wilful 17.07.10 07:33 # +0
Конечно, полноценный язык всегда лучше, но я не прогер и пока что нет времени на язык. Да и в системе по дефолту нет интерпретаторов.

Так то я согласен, в шеле порой "удобен очень не синтаксис".
kstep 17.07.10 12:32 # +0
Если стоит более-менее полный набор прог, то уж хотя бы перл или питон (а то и оба) должны быть. Уж перл-то наверняка будет.
sugar 17.07.10 17:12 # +0
А еще у перла куча модулей (CPAN просто огромен), и не всегда угадаешь, что будет установлено на конечно системе.
stasikos 17.07.10 10:55 # +1
А еще...
if [ "$DIRECTORY" ne "/" ] ; then
rm -rf "$DIRECTORY"/*
fi

16.07.10 20:23

wilfulНе знаю как назвать, пусть будет shell

тут и тут местные жители делились своим опытом по написанию скриптов, которые должны били бы упростить жизнь страждущим странникам, но как бы не так. Эти скрипты не предназначены для распространения, поскольку они специализированы для их владельца, они не представляют из себя функциональной ценности, т.к. содержат в себе исключительно последовательности команд (во втором случае выполняемых по дефолту от рута!), выполнение которых совершенно не отслеживается и в любой момент может произойти всё, что угодно:
  • не хватило прав на создание папки - дальше непредсказуемые последствия выполнения оставшейся части команд?

  • а если файл существует уже с именем указанным для папки?

  • вдруг очепятка в пароле?

и т.д. и т.п....

Язык или почти язык, я уж точно не знаю, но знаю, что он предоставляет вполне достаточно средств для обработки "защиты от дурака", в кратком изложении предоставлю некоторые из них:
  1. be root?
    if [ "$LOGNAME" != "root"  ]; then

    Можно использовать как наличия, так и для отсутствия прав.

  2. Is it works?
    if [ $? = "0" ]; then

    Ну а как же, проверять удачно ли завершилась предыдущая операция очень важно

  3. Is it you?!
    if [ -f $DIR_NAME ]; then

    А вдруг не папка, вдруг есть или нету, проверка на файл - отличная возможность избежать апокалипсиса (подсказка: тоже есть и для других типов, в том числе и папок)

  4. You are assured?
    1
    2
    3
    echo -n "Папка не существует, создать? \"$DIR_NAME\" [y/n]: "
    read ANS
    if [ "$ANS" = "y" ] || [ "$ANS" = "Y" ]; then

    Возможно в некоторых ситуациях излишне, но для торопливых никто не запрещает сделать параметр по дефолту (см. ниже)

  5. Is there something?
    1
    2
    3
    if [ -z $2 ]; then
        VAR="var"
     

    Так можно обработать и отказ, при условии не достаточного кол-ва параметров, например

  6. Last?
    1
    2
    exit 0
     

    Есть некоторые рамки приличия, т.е. ваш скрипт может должен быть интерактивным, например выдавая на выходе 0 при хорошей погоде или же "не 0" при плохом настроении


Конечно, это далеко не все возможности скриптинга (отсылаю в wmii, в котором весь конфиг написан на нем), я лишь хочу чтобы прежде, чем выложить всяческие штуки, прокрутите в голове, что возможно этим кто-то воспользуется...


Лучшие блоги (все 133)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Элита (все 2589 из 203 городов)
Топ пользователей Топ блогов
welinux.ru

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн