Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

різні поради

  • Для ведення обліку використання сценарію користувачами, додайте наступні рядки в сценарій. Вони запишуть в файл звіту назву сценарію і час запуску.

    # Додавання (>>) облікового запису, про використання сценарію, в файл звіту. date >> $ SAVE_FILE # Дата і час. echo $ 0 >> $ SAVE_FILE # Назва сценарію. echo >> $ SAVE_FILE # Порожній рядок - як роздільник записів. # Не забудьте визначити змінну оточення SAVE_FILE в ~ / .bashrc # (що небудь, типу: ~ / .scripts-run)
  • Оператор >> виробляє додавання рядка в кінець файлу. А як бути, якщо треба додати рядок в початок існуючого файлу?

    file = data.txt title = "*** Це титульний рядок у текстовому файлі ***" echo $ title | cat - $ file> $ file.new # "cat -" об'єднує stdout з вмістом $ file. # В результаті вийде # + новий файл $ file.new, в початок якого додано рядок $ title.

    Само собою зрозуміло, те ж саме можна зробити за допомогою sed .

  • Сценарій командної оболонки може використовуватися як команда всередині іншого сценарію командної оболонки, Tcl, або wish сценарію або, навіть в Makefile . Він може бути викликаний як зовнішня команда з програми на мові C, за допомогою функції system (), тобто system ( "script_name"); .

  • Збирайте свої бібліотеки часто використовуваних функцій і визначень. Ці "бібліотеки" можуть бути до сценаріїв, за допомогою команди крапка (.) Або source .

    # Сценарій-бібліотека # ------ ------- # Зверніть увагу: # Тут немає sha-bang ( "#!"). # І немає "живого коду". # Визначення змінних ROOT_UID = 0 # UID root-а, 0. E_NOTROOT = 101 # Помилка - "звичайний користувач". MAXRETVAL = 255 # Максимальне значення, яке можуть повертати функції. SUCCESS = 0 FAILURE = -1 # Функції Usage () # Повідомлення "Порядок використання:". {If [-z "$ 1"] # Немає аргументів. then msg = filename else msg = $ @ fi echo "Порядок використання:` basename $ 0` "$ msg" "} Check_if_root () # Перевірка прав користувача. {# З прикладу "ex39.sh". if [ "$ UID" -ne "$ ROOT_UID"] then echo "Цей сценарій повинен запускатися з привілеями root." exit $ E_NOTROOT fi} CreateTempfileName () # Створення "унікального" імені для тимчасового файлу. {# З прикладу "ex51.sh". prefix = temp suffix = `eval date +% s` Tempfilename = $ prefix. $ suffix} isalpha2 () # Перевірка, чи перебуває рядок тільки з алфавітних символів. {# З прикладу "isalpha.sh". [$ # -Eq 1] || return $ FAILURE case $ 1 in * [! a-zA-Z] * | "") return $ FAILURE ;; *) Return $ SUCCESS ;; esac # Спасибі SC} abs () # Абсолютне значення. {# Увага: Максимально можливе возвращаеіое значення # не може перевищувати 255. E_ARGERR = -999999 if [-z "$ 1"] # Перевірка наявності вхідного аргументу. then return $ E_ARGERR # Код помилки, зазвичай повертається в таких випадках. fi if [ "$ 1" -ge 0] # Якщо не негативне, then # absval = $ 1 # залишити як є. else # Інакше, let "absval = ((0 - $ 1))" # змінити знак. fi return $ absval} tolower () # Перетворення рядків символів в нижній регістр {if [-z "$ 1"] # Якщо немає вхідного аргументу, then # + видати повідомлення про помилку echo "(null)" return # + і вийти з функції . fi echo "$ @" | tr AZ az # Перетворити все вхідні аргументи ($ @). return # Для запису результату роботи функції в змінну, використовуйте операцію підстановки команди. # Наприклад: # oldvar = "A seT of miXed-caSe LEtTerS" # newvar = `tolower" $ oldvar "` # echo "$ newvar" # a set of mixed-case letters # # Вправа: Додайте в цю бібліотеку функцію перекладу символів в верхній регістр. # Toupper () [це досить просто]. }
  • Для підвищення ясності коментарів, виділяйте їх особливим чином.

    ## Увага! rm -rf * .zzy ## Комбінація ключів "-rf", в команді "rm", надзвичайно небезпечна, ## + особливо при видаленні за шаблоном. # + Продовження коментаря на новому рядку. # Це перший рядок коментаря # + це другий рядок коментаря, # + це останній рядок коментаря. #* Зверніть увагу. #o Приклад. #> Альтернативний варіант. while [ "$ var1"! = "end"] #> while test "$ var1"! = "end"
  • Для створення блокових коментарів, можна використовувати конструкцію if-test .

    #! / Bin / bash COMMENT_BLOCK = # Якщо спробувати ініціювати цю змінну ніж небудь, # + то ви отримаєте несподіваний результат. if [$ COMMENT_BLOCK]; then Блок коментаря - ================================= Це рядок коментаря. Це інший рядок коментаря. Це ще один рядок коментаря. ================================= echo "Цей рядок не виводиться." Цей блок коментаря не викликає повідомлення про помилку! Круто! fi echo "Цей рядок буде виведена на stdout." exit 0

    Порівняйте цей варіант створення блокових коментарів з вбудованим документом, що використовується для створення блокових коментарів .

  • За допомогою службової змінної $? , Можна перевірити - чи є вхідний аргумент цілим числом.

    #! / Bin / bash SUCCESS = 0 E_BADINPUT = 65 test "$ 1" -ne 0 -o "$ 1" -eq 0 2> / dev / null # Перевірка: "дорівнює нулю або не дорівнює нулю". # 2> / dev / null придушення виведення повідомлень про помилки. if [$? -ne "$ SUCCESS"] then echo "Порядок використання:` basename $ 0` целое_чісло "exit $ E_BADINPUT fi let" sum = $ 1 + 25 "# Буде видавати помилку, якщо $ 1 не є цілим числом. echo "Sum = $ sum" # Будь-яка змінна може бути перевірена таким чином, а не тільки вхідні аргументи. exit 0
  • Діапазон, що повертаються функціями значень, 0 - 255 - серйозне обмеження. Іноді може виявитися вельми проблематичним використання глобальних змінних, для передачі результату з функції. У таких випадках можна порекомендувати передачу результатів роботи функції через запис в stdout.

    Приклад 33-10. Незвичайний спосіб передачі значення, що повертається

    #! / Bin / bash # multiplication.sh multiply () # Функції виконує множення всіх переданих аргументів. {Local product = 1 until [-z "$ 1"] # Поки не дійшли до останнього аргументу ... do let "product * = $ 1" shift done echo $ product # значення не буде виведено на екран,} # + оскільки воно буде записано в змінну. mult1 = 15383; mult2 = 25211 val1 = `multiply $ mult1 $ mult2` echo" $ mult1 X $ mult2 = $ val1 "# 387820813 mult1 = 25; mult2 = 5; mult3 = 20 val2 = `multiply $ mult1 $ mult2 $ mult3` echo" $ mult1 X $ mult2 X $ mult3 = $ val2 "# 2500 mult1 = 188; mult2 = 37; mult3 = 25; mult4 = 47 val3 = `multiply $ mult1 $ mult2 $ mult3 $ mult4` echo" $ mult1 X $ mult2 X $ mult3 X mult4 = $ val3 "# 8173300 exit 0

    Такий прийом спрацьовує і для строкових значень. Таким чином, функція може і нечислової результат.

    capitalize_ichar () # Перший символ всіх строкових аргументів {# + переводиться в верхній регістр. string0 = "$ @" # Прийняти всі аргументи. firstchar = $ {string0: 0: 1} # Перший символ. string1 = $ {string0: 1} # Залишок рядки. FirstChar = `echo" $ firstchar "| tr az AZ` # Перетворити в верхній регістр. echo "$ FirstChar $ string1" # Видати на stdout. } Newstring = `capitalize_ichar" each sentence should start with a capital letter. "` Echo "$ newstring" # Each sentence should start with a capital letter.

    Використовуючи цей прийом, функція може навіть кілька значень.

    Приклад 33-11. Незвичайний спосіб отримання декількох значень, що повертаються

    #! / Bin / bash # sum-product.sh # Функція може "повертати" кілька значень. sum_and_product () # Обчислює суму і твір аргументів. {Echo $ (($ 1 + $ 2)) $ (($ 1 * $ 2)) # Висновок на stdout двох значень, розділених пропуском. } Echo echo "Перше число:" read first echo echo "Друге число:" read second echo retval = `sum_and_product $ first $ second` # Отримати результат. sum = `echo" $ retval "| awk '{print $ 1}' '# Перше значення (поле). product = `echo" $ retval "| awk '{print $ 2}' '# Друге значення (поле). echo "$ first + $ second = $ sum" echo "$ first * $ second = $ product" echo exit 0
  • Наступна хитрість - передача масиву в функцію , І масиву з функції.

    Передача масиву в функцію виконується за допомогою запису елементів масиву, розділених пробілами, в змінну, за допомогою операції підстановки команди . Отримати масив назад можна, дотримуючись вищеописаної стратегії, через висновок на stdout, а потім, за допомогою все тієї ж операції підстановки команди і оператора (...) - записати в масив.

    Приклад 33-12. Передача масиву в функцію і повернення масиву з функції

    #! / Bin / bash # array-function.sh: Передача масиву в функцію і ... # "повернення" масиву з функції Pass_Array () {local passed_array # Локальна змінна. passed_array = ( `echo" $ 1 "`) echo "$ {passed_array [@]}" # Список всіх елементів в новому масиві, # + оголошеному і ініціалізувати в функції. } Original_array = (element1 element2 element3 element4 element5) echo echo "original_array = $ {original_array [@]}" # Список всіх елементів вихідного масиву. # Так можна віддати масив у функцію. # ********************************** argument = `echo $ {original_array [@]} '# ** ******************************** # Помістивши все елементи масиву в змінну, # + розділяючи їх пробілами. # # Зверніть увагу: метод прямої передачі масиву в функцію не спрацює. # Так можна отримати масив з функції. # ***************************************** returned_array = ( `Pass_Array" $ argument "`) # ***************************************** # Записати результат у змінну -Маса. echo "returned_array = $ {returned_array [@]}" echo "==================================== ========================= "# А тепер спробуйте отримати доступ до локального масиву # + за межами функції. Pass_Array "$ argument" # Функція виведе масив, але ... # + доступ до локального масиву, за межами функції, виявиться неможливий. echo "результуючий масив (всередині функції) = $ {passed_array [@]}" # "ПУСТЕ" ЗНАЧЕННЯ, оскільки це локальна змінна. echo exit 0

    Більш складний приклад передачі масивів у функції, ви знайдете в Приклад A-11 .

  • Використання конструкцій з подвійними круглими дужками дозволяє застосовувати C-подібний синтаксис операцій присвоєння і инкремента змінних, а також оформлення циклів for і while . Див. приклад 10-12 і приклад 10-17 .

  • Іноді дуже зручно "пропускати" дані через один і той же фільтр, але з різними параметрами, використовуючи конвеєрну обробку. Особливо це відноситься до tr і grep .

    # З прикладу "wstrings.sh". wlist = `strings" $ 1 "| tr AZ az | tr '[: space:]' Z | \ Tr -cs '[: alpha:]' Z | tr -s '\ 173- \ 377' Z | tr Z '' `

    Приклад 33-13. Ігри з анаграмами

    #! / Bin / bash # agram.sh: Ігри з анаграмами. # Пошук анаграм ... LETTERSET = etaoinshrdlu anagram "$ LETTERSET" | # Знайти всі анаграми в наборі символів ... grep '.......' | # Складаються, як мінімум з 7 символів, grep '^ is' | # Починаються з 'is' grep -v 's $' | # Виключаючи множину grep -v 'ed $' # і дієслова в минулому часі # Тут використовується утиліта "anagram" # + яка входить до складу пакету "yawl", розробленого автором. # Http://ibiblio.org/pub/Linux/libs/yawl-0.2.tar.gz exit 0 # Кінець. bash $ sh agram.sh islander isolate isolead isotheral

    Див. також приклад 27-2 , приклад 12-18 і Приклад A-10 .

  • Для створення блокових коментарів можна використовувати. Див. приклад 17-10 .

  • Пристрій може спробувати здійснити утиліти зі сценарію на машині, де ця утиліта відсутня, потенційно небезпечна. Для обходу подібних проблем можна скористатися утилітою whatis .

    CMD = command1 # Основний варіант. PlanB = command2 # Запасний варіант. command_test = $ (whatis "$ CMD" | grep 'nothing appropriate') # Якщо 'command1' не знайдено в системі, то 'whatis' поверне # + "command1: nothing appropriate." # ==> Від перекладача: Будьте уважні! Якщо у вас локалізована версія whatis # ==> то висновок від неї може відрізнятися від використовуваного тут ( 'nothing appropriate') if [[-z "$ command_test"]] # Перевірка наявності утиліти в системі. then $ CMD option1 option2 # Запуск команди з параметрами. else # Інакше, $ PlanB # + запустити command2 (запасний варіант). fi
  • команда run-parts зручна для запуску кількох сценаріїв, особливо в комбінації з cron або at .

  • Було б непогано забезпечити сценарій графічним інтерфейстом X-Window. Для цього можна порекомендувати пакети Xscript, Xmenu і widtools. Правда, перші два, здається більше не підтримуються розробниками. Зате widtools можна отримати тут .

    Пакет widtools (widget tools) вимагає наявності бібліотеки XForms. Крім того, необхідно злегка підправити Makefile , Щоб цей пакет можна було зібрати на типовою Linux-системі. Але найгірше те, що три з шести віджетів не працюють: - (((segfault).

    Для постороения додатків з графічним інтерфейсом, можна спробувати Tk, або wish (надбудова над Tcl), PerlTk (Perl з підтримкою Tk), tksh (ksh з підтримкою Tk), XForms4Perl (Perl з підтримкою XForms), Gtk-Perl (Perl з підтримкою Gtk) або PyQt (Python з підтримкою Qt).

  • А як бути, якщо треба додати рядок в початок існуючого файлу?
    If [$?
    Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    Подготовка к ЕГЭ по математике
    Статьи Опубликовано: 05.10.2017 Подготовка к ЕГЭ по МАТЕМАТИКЕ. 1 часть. Эффективный курс подготовки. Вы находитесь на сайте www.ege-ok.ru - Подготовка к ЕГЭ по математике. Меня зовут Инна Владимировна

    Куда поступить с обществознанием, русским и математикой
    Статьи Опубликовано: 06.10.2017 Сдача ЕГЭ. Куда поступать? Обществознание считается одним из самых популярных предметов, которые выпускники сдают на ЕГЭ. Ввиду высокого рейтинга дисциплины Рособрнадзор

    Сайт Майер Елены - ЕГЭ по математике
    Планируется проведение двух отдельных экзаменов – базового и профильного. Кому сдавать базовый ЕГЭ по математике? Базовый ЕГЭ организуется для выпускников, изучающих математику для общего развития

    ГДЗ решебник по математике 4 класс
    Извините, тут пока ничего нет ((( Решебник по математике 4 класс (Истомина Н.Б.) – не просто возможность быстро выполнить домашнее задание для учащегося, но и способ разобраться в труднорешаемых задачах.

    ГДЗ по математике 1 класс Самсонова самостоятельные работы
    Решебник по математике за 1 класс автора Самсоновой Л.Ю. 2012 года издания. Данное пособие предлагает готовые решения на разнообразные упражнения, направленные на активизацию всего учебного процесса. Здесь

    Для этой работы нужна математика
    Слотов: 956 Рулеток: 7 Лицензия: Pragmatic Play, Microgaming, ELK, Yggdrasil, Habanero, Amatic, Isoftbet, Netent, Rival, Igrosoft, Quickspin. Игры: Автоматы, Покер, Рулетки. Всего 963 Отдача: 98% Бонус

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

    Функция экспонента в Excel
    Одной из самых известных показательных функций в математике является экспонента. Она представляет собой число Эйлера, возведенное в указанную степень. В Экселе существует отдельный оператор, позволяющий

    ЕГЭ по математике 2018
    ЕГЭ по математике, наравне с русским языком , – обязательный экзамен для сдачи выпускниками 11-х классов. По статистике он самый сложный. Мы предлагаем ознакомиться с общей информацией об экзамене и

    Секреты эффективной и быстрой подготовки ко второй части ОГЭ по математике.
    Уважаемые девятиклассники, настоящие или будущие! Часто от вас приходится слышать следующие вопросы. Легко ли подготовиться к заданиям второй части ОГЭ по математике? Сколько для этого понадобится


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: