BASH скрипты в Linux

Тема в разделе "Linux", создана пользователем radioengineer, 14 ноя 2014.

  1. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.592
    Симпатии:
    357
    Адрес:
    Алматы
    Как начинающий сделал небольшую подборку bash команд, которые показались мне интересными и полезными при написании скриптов. Сразу оговорюсь, что по всем командам можно получить развернутый хелп командой man
    #################################################################

    Использование команды banner <Слово для вывода знаками #> -- полезно для вывода названия сценария. Чтобы использовать нужно установить пакет sysvbanner
    date – вывод даты и времени в определенном формате.
    echo “HelloWorld!” – выводит текстовую строку
    sleep число – приостановить сценарии на количество секунд равное числу, после числа можно использовать суффиксы m, h или d соответственно минуты, часы и дни.
    tee–a <имя файла> -- перенаправляет ввод с клавиатуры в файл. –a используется для того, чтобы файл не был перезаписан.
    true – успешное завершение, возвращает 0, если сценарий успешно завершен.
    yes – возвращает Y и символ новой строки, как будто пользователь ввел Y и нажал <Enter>, пример yes | apt-getinstallmc
    cmp файл1 файл2 – сравнение двух файлов как бинарных, так и текстовых
    grep – текстовый фильтр
    less – постраничный вывод | less можно еще использовать | more
    head и tail – вывод начала и хвоста файла, например, tail –f file.log - вывести последние строки файла логов
    ifconfig – настройка сетевого интерфейса
    wget – загрузка файлов
  2. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.592
    Симпатии:
    357
    Адрес:
    Алматы
    Простейший сценарий:

    #!/bin/bash
    echo “Hello, World!”

    # это комментарий, после решетки пробел обязательно

    Сохраняем сценарий под именем hello и выполняем chmod +x hello. Запускаем сценарий командой ./hello
  3. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.592
    Симпатии:
    357
    Адрес:
    Алматы
    Пример объявления переменной:

    ADDRESS=www.radiotech.kz
    echo $ADDRESS


    при объявлении переменной не должно быть пробелов до и после знака =
    Значение для переменной указывать вручную не обязательно — его можно прочитать с клавиатуры:

    read ADDRESS
    ADDRESS=’hostname’


    В Linux часто используются переменные окружения. Это специальные переменные, содержащие служебные данные. Вот примеры некоторых часто используемых переменных окружения:

    BASH — полный путь до исполняемого файла командной оболочки bssh ;
    BASH_VERSION — версия bash ;
    HOME — домашний каталог пользователя, который запустил сценарий;
    HOSTNAME — имя компьютера;
    RANDOM — случайное число в диапазоне от 0 до 32 767;
    OSTYPE — тип операционной системы;
    PWD — текущий каталог;
    PS1 — строка приглашения;
    UID — ID пользователя, который запустил сценарий;
    USER — имя пользователя.

    Для установки собственной переменной окружения используется команда export:

    # присваиваем переменной значение
    $ADDRESS=www.radiotech.kz
    # экспортируем переменную — делаем ее переменной окружения
    # после этого переменная ADDRESS будет доступна в других сценариях
    export $ADDRESS
  4. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.592
    Симпатии:
    357
    Адрес:
    Алматы
    Пример объявления массива:

    ARRAY[0]=1
    ARRAY[1]=2
    echo $ARRAY[0]
  5. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.592
    Симпатии:
    357
    Адрес:
    Алматы
    Циклы

    Синтаксис цикла for выглядит так:
    for переменная in список
    do
    команды
    done

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

    for n in 1 2 3;
    do
    echo $n;
    done


    Обратите внимание: список значений и список команд должны заканчиваться точкой с запятой.
    Как и следовало ожидать, наш сценарий выведет на экран следующее:
    1
    2
    3

    Синтаксис цикла while выглядит немного иначе:

    while условие
    do
    команды
    done

    Цикл while выполняется до тех пор, пока истинно заданное условие. Подробно об условиях мы поговорим в следующем разделе, а сейчас напишем аналог предыдущего цикла, т. е. нам нужно вывести 1, 2 и 3, но с помощью while , а не for :

    n=1
    while [ $n -lt 4 ]
    do
    echo "$n "
    n=$(( $n+1 ));
    done

Поделиться этой страницей