Як правильно Новомосковскть скрипти

Тепер розіб'ємо програму по рядках, а в місцях з if на блоки. Розберемося Новомосковськ поспіль що де відбувається

Тут ми створюємо і инициализируем змінну userresources. У неї ми записуємо $ HOME / .Xdefaults. Відразу варто зазначити, що $ HOME змінна оболонки і замість неї буде підставлена ​​те, чим вона була инициализирована. Стандартно в цій змінній зберігається повний шлях до домашньої директорії користувача від якого був запущений скрипт. Як результат, оболонка переведе цей рядок, в моєму випадку, як userresources = / home / zen /.Xdefaults

Наступний блок if, містить в умови перевірку "-f" на існування файлу. Скрізь в коді, де зустрічається $ userresources, буде тепер підставлений шлях /home/zen/.Xdefaults. Якщо файл існує, то буде виконана команда xrdb. До слова, якщо шлях не існує, то весь вміст блоку if буде просто проігноровано оболонкою

Наступний блок if, містить в умови перевірку "-d" на існування каталогу /etc/X11/xinit/xinitrc.d. Якщо такий каталог існує, то буде виконаний цикл for, де на кожній ітерації в змінну f буде записуватися шлях до файлу з каталогу. За допомогою перевірки "-x" перевіряємо виконуваний чи файл і якщо так "", то завантажуємо і виконуємо його вміст. "." $ F "". Після циклу видаляємо змінну f командою unset.

Команда export додає змінні в середу всіх викликаються згодом команд. Тобто, так само як $ HOME, буде створена змінна середовища GTK2_RC_FILES, яка в моєму випадку буде містити /home/zen/.gtkrc-2.0

exec - вбудована команда оболонки для запуску інших програм. В даному прикладі запуск dbus-launch openbox-session.

бог створив працю і мавпу
щоб вийшов чоловік
а ось пінгвіна він не чіпав
той відразу вийшов добре

STDIN - потік, в який потрапляють символи введені з клавіатури
STDOUT - потік, в який програма виводить текст
STDERR - потік, куди виводиться інформація про помилки

Відповідно у кожного потоку є свій номер (дескриптор)
  • STDIN - 0
  • STDOUT - 1
  • STDERR - 2
Навіщо це зроблено?

Наприклад, ти хочеш отримати вміст файлу: cat 1.txt> 2.txtеслі немає доступу до 1.txt, то на STDERR виведеться повідомлення про помилку, але в файл 2.txt це повідомлення не потрапить
таким чином можна обробляти команди cat 1.txt 2> result.logтут ми явно STDERR (2) перенаправили в result.log. Якщо будуть в процесі якісь помилки, то вони будуть відправлені в файл result.log. Хоча в ідеалі, можна відправляти лог на пошту. Наприклад: cat 1.txt> 2.txt 2> result.log || xmail. result.logеслі в спробі прочитати або записати файл буде помилка, то cat завершиться з не нульовим кодом і файл result.log буде відправлений поштою.

Додатково про потоки введення / виводу можна прочитати на www.xgu.ru.

бог створив працю і мавпу
щоб вийшов чоловік
а ось пінгвіна він не чіпав
той відразу вийшов добре

Повернутись до початку

Повернутися в «Bash-скрипти»

Зараз переглядають цей форум: Немає зареєстрованих користувачів і 0 гостей

Схожі статті