
Вопрос 10.
Создание пользовательского сценария - просто, как правда. Для этого всего и нужно:
создать командную конструкцию, достойную увековечивания;
поместить ее в простой текстовый файл;
по потребности и желанию снабдить комментариями;
тем или иным способом запустить файл на исполнение.
"Читает" значение переменной с устройства стандартного ввода -- stdin, в интерактивном режиме это означает клавиатуру. Ключ -a позволяет записывать значения в массивы (см. Пример 25-3).
Пример 11-2. Ввод значений переменных с помощью read
#!/bin/bash
echo -n "дите значение переменной 'var1': "
# Ключ -n подавляет вывод символа перевода строки.
read var1
# Обратите внимание -- перед именем переменной отсутствует символ '$'.
echo "var1 = $var1"
echo
# Одной командой 'read' можно вводить несколько переменных.
echo -n "дите значения для переменных 'var2' и 'var3' (через пробел или табуляцию): "
read var2 var3
echo "var2 = $var2 var3 = $var3"
# Если было введено значение только одной переменной, то вторая останется "пустой".
exit 0
Если команде read не была передано ни одной переменной, то ввод будет осуществлен в переменную $REPLY.
Вопрос 11
Создание пользовательского сценария - просто, как правда. Для этого всего и нужно:
создать командную конструкцию, достойную увековечивания;
поместить ее в простой текстовый файл;
по потребности и желанию снабдить комментариями;
тем или иным способом запустить файл на исполнение.
Арифметические выражения
Арифметические выражения используются в следующих случаях:
команда арифметического вычисления
подстановки арифметических вычислени
подстановки для вычисления параметров подстроки
встроенная команда "let"
циклы в стиле языка программирования C
индексация массива
выражения для условий
Арифметические выражения - это выражения , которые вычисляются по некоторым правилам, которые описаны ниже. Операторы и правила арифметических выражений в основном унаследованы из языка программирования C/
Команда let производит арифметические операции над переменными. В большинстве случаев, ее можно считать упрощенным вариантом команды expr.
Пример 11-8. Команда let, арифметические операции.
#!/bin/bash
echo
let a=11 # То же, что и 'a=11'
let a=a+5 # Эквивалентно "a = a + 5"
# (Двойные кавычки и дополнительные пробелы делают код более удобочитаемым)
echo "11 + 5 = $a"
let "a <<= 3" # Эквивалентно let "a = a << 3"
echo "\"\$a\" (=16) после сдвига влево на 3 разряда = $a"
let "a /= 4" # Эквивалентно let "a = a / 4"
echo "128 / 4 = $a"
let "a -= 5" # Эквивалентно let "a = a - 5"
echo "32 - 5 = $a"
let "a = a * 10" # Эквивалентно let "a = a * 10"
echo "27 * 10 = $a"
let "a %= 8" # Эквивалентно let "a = a % 8"
echo "270 mod 8 = $a (270 / 8 = 33, остаток = $a)"
echo
exit 0
Вопрос 12
Арифметические выражения используются в следующих случаях:
команда арифметического вычисления
подстановки арифметических вычислени
подстановки для вычисления параметров подстроки
встроенная команда "let"
циклы в стиле языка программирования C
индексация массива
выражения для условий
${#string} - Длина строки
Извлечение подстроки
${string:position} - с position до конца
${string:position:length} - с position длиной length символов
${string: -length} - последние length символов
Удаление части строки
${string#substring} - до первого с начала
${string##substring} - до последнего с начала
${string%substring} - до первого с конца
${string%%substring} - до последнего с конца
Замена подстроки
${string/substring/replacement} - первое вхождение
${string//substring/replacement} - все вхождения
${var/#Pattern/Replacement} - Если в переменной var найдено совпадение с Pattern,
причем совпадающая подстрока расположена в начале строки (префикс),
то оно заменяется на Replacement. Поиск ведется с начала строки
${var/%Pattern/Replacement} - Если в переменной var найдено совпадение с Pattern,
причем совпадающая подстрока расположена в конце строки (суффикс),
то оно заменяется на Replacement. Поиск ведется с конца строки
Пример:
a="12345"; echo "${a}"; echo "${a:3}"; echo "${a#12}"; echo "${a/12/21}"