Переменные в Linux

Вывод переменных в Linux, использование кавычек при выводе переменных в Linux, позиционные параметры в Linux, переменные окружения в Linux

    Переменные

    ~$ variable=12 #Имя переменной ~$ echo $variable #Ссылка на переменную 12 ~$ echo "Мне $variable лет" #Упрощенная форма ${variable} Мне 12 лет ~$ echo "Мне ${variable} лет" #Строгая форма Мне 12 лет #Присваивание результата выполнения команды в переменную $a=`ls -l` #Более современный метод присваивания a=$(ls -l)
    Использование кавычек при выводе переменных

    Заключение ссылки на переменную в кавычки сохраняет пробельные символы
    Если в значениях переменных встречаются пробелы,то использование кавычек обязательно

    ~$ hello="A B C D" ~$ echo $hello A B C D ~$ echo "$hello" A B C D #Вывод значения переменной в одинарных кавычках ~$ echo '$hello' $hello #Другой пример a=`ls -l` echo $a #Все будет в одной строке без пробелов echo "$a" #Вывод будет таким же как если выполнить команду ls -l из командной строке
    Переменные окружения

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

    Позиционные параметры

    Позиционные параметры - это аргументы которые передаются из командной строки в скрипт
    $0, $1, $2 и т.д.
    Аргументы больше $9, должны заключаться в фигурные скобки: ${10}, ${11} и т.д.
    Специальные аргументы: $* И $@ содержат все позиционные параметры

    $# - кол-во аргументов командой строки
    $* - все аргументы в виде одной строки
    $@ - то же самое, что и $*, но при этом каждый параметр представлен как отдельная строка

    #!/bin/bash E_BADARGS=65 if [ ! -n "$1" ] then echo "Порядок использования: command \$arg1 \$arg2 \$arg3" exit "$E_BADARGS" fi echo index=1 echo "Список аргументов в переменной \$*: " for arg in "$*" do echo "Аргумент $index = $arg" let "index+=1" done index=1 echo "Список аргументов в переменной: \$@ " for arg in "$@" do echo "Аргумент $index = $arg" let "index+=1" done ~$ ./test.sh a b c d Список аргументов в переменной $*: Аргумент 1 = a b c d Список аргументов в переменной: $@ Аргумент 1 = a Аргумент 2 = b Аргумент 3 = c Аргумент 4 = d
    Внутренние переменные

    #Путь к исполняемому файлу bash $BASH #Содержимое вершины стека каталогов $DIRSTACK dirs #Заданный по умолчанию редактор $EDITOR #Идентификационный номер пользователя $EUID #Идентификационный номер группы которой принадлежит пользователь $GROUPS #Домашний каталог пользователя $HOME #Сетевое имя хоста устанавливаемое командой hostname $HOSTNAME #Идентифицирует аппаратную архитектуру echo $HOSTTYPE x86_64 echo $MACHTYPE x86_64-pc-linux-gnu #Разделитель полей во вводимой строке, по умолчанию пробел, может быть изменен, например, для разбора строк, в которых отдельные поля разделены запятыми #при составлении содержимого переменной $*, Bash использует первый символ из $IFS для разделения аргументов $IFS bash -c 'set w x y z; IFS=":-;"; echo "$*"' #Тип операционной системы $OSTYPE #Время работы сценария в секундах $SECONDS #Пример echo $SECONDS sleep 3 echo $SECONDS sleep 3 echo $SECONDS #Еще один пример while [ "$SECONDS" -le 10 ] do sleep 1; echo "Сценарий проработал $SECONDS секунд" done #Список допустимых опций интерпретатора SHELL echo $SHELLOPTS braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
    set

    Команда set изменяет значения внутренних переменных сценария. Она может использоваться для переключения опций ( ключей, флагов ), определяющих поведение скрипта.
    Команда set может также применяться для сброса и установки позиционных параметров, значения которых будут восприняты как результат выполнения команды ( set `command` )
    Вызов set без параметров просто выводит список инициализированных переменных окружения

    set `uname -a` # Изменение аргументов значения которых берутся из результата работы `uname -a` echo "Аргументы после вызова set \`uname -a\` :" # $1, $2, $3 и т.д. будут переустановлены в соответствии с выводом команды `uname -a` echo "Поле #1 'uname -a' = $1" echo "Поле #2 'uname -a' = $2" echo "Поле #3 'uname -a' = $3"

    Если команда set используется с ключом "--", после которого следует переменная, то значение переменной переносится в позиционные параметры (аргументы). Если имя переменной отсутствует, то эта команда приводит к сбросу позиционных параметров

    #!/bin/bash a='один' b='два' c='три' set -- $a $b $c echo "Поле #1 'uname -a' = $1" echo "Поле #2 'uname -a' = $2" echo "Поле #3 'uname -a' = $3"

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


    Команда export экспортирует переменную, делая ее доступной дочерним процессам. К сожалению, невозможно экспортировать переменную родительскому процессу
    Допускается объединение инициализации и экспорта переменной в одну инструкцию: export var1=xxx

    declare, typeset, readonly

    readonly то же самое, что и declare -r, делает переменную доступной только для чтения, т.е. переменная становится подобна константе.

    a="test1" b="test2" declare -r a a="test3" -bash: a: переменная только для чтения readonly b b="test3" -bash: b: переменная только для чтения
    Источники
    Последнее изменение: 06.10.2024 22:21


    Связанные темы

    Команда exec linux

    Использование команды tee в Linux

    Язык shell в Linux

    Библиотеки Linux

    Использование md5sum

    Использование wget и curl в Linux

    Команда chattr и lsattr в Linux

    Использование awk Linux Alpine

    Использование sed в Linux

    Применение getopt в Linux

    Переменные окружения в Linux

    Блокировка пользователя в Linux

    Классы символов в Linux

    Использование tar в Linux

    Подстановка имен файлов

    Проверка на необходимость перезапуска после обновления пакетов

    Стандартные потоки и перенаправление ввода/вывода в Linux

    Функции в языке Shell

    Использование grep в Linux

    Архивирование и сжатие файлов в Linux

    Использование find Linux

    Права пользователей и групп

    Полезные команды и скрипты Linux

    Условная конструкция if в Linux

    Использование grep в Linux

    Использование xargs в Linux

    Фигурные скобки в bash

    Циклы в языке shell

    Использование оператора select в языке shell

    Внутренние и внешние команды linux

    Использование конструкции case в Linux

    Подстановка команд в Linux

    Мониторинг системы Linix с помощью getconf

    Использование ANCI последовательностей в Linux

    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ