echo "Входной аргумент командной строки = \"$1\""
exit 0 # Точка выхода находится здесь, только когда задан аргумент командной строки.
# Проверьте код возврата в обеих случаях, с и без аргумента командной строки.
# Если аргумент задан, то код возврата будет равен 0.
# Иначе -- 1.
Подстановка параметров и/или экспансия. Следующие выражения могут служить дополнениями оператора match команды expr, применяемой к строкам (см. Пример 12-6). Как правило, они используются при разборе имен файлов и каталогов.
Длина переменной / Удаление подстроки
${#var}
String length (число символов в переменной $var). В случае массивов, команда ${#array} возвращает длину первого элемента массива.
Исключения:
${#*} и ${#@} возвращает количество аргументов (позиционных параметров).
Для массивов, ${#array[*]} и ${#array[@]} возвращает количество элементов в массиве.
Пример 9-15. Длина переменной
#!/bin/bash
# length.sh
E_NO_ARGS=65
if [ $# -eq 0 ] # Для работы скрипта необходим хотя бы один входной параметр.
then
echo "Вызовите сценарий с одним или более параметром командной строки."
exit $E_NO_ARGS
fi
var01=abcdEFGH28ij
echo "var01 = ${var01}"
echo "Length of var01 = ${#var01}"
echo "Количество входных параметров = ${#@}"
echo "Количество входных параметров = ${#*}"
exit 0
${var#Pattern}, ${var##Pattern}
Удаляет из переменной $var наименьшую/наибольшую подстроку, совпадающую с шаблоном $Pattern. Поиск ведется с начала строки $var.
Пример использования из Пример A-8:
# Функцмя из сценария "days-between.sh".
# Удаляет нули, стоящие в начале аргумента-строки.
strip_leading_zero () # Ведущие нули, которые согут находиться в номере дня/месяца,
# лучше удалить
val=${1#0} # В противном случае Bash будет интерпретировать числа
return $val # как восьмеричные (POSIX.2, sect 2.9.2.1).
}
Другой пример:
echo `basename $PWD` # Имя текущего рабочего каталога.
echo "${PWD##*/}" # Имя текущего рабочего каталога.
echo
echo `basename $0` # Имя файла-сценария.
echo $0 # Имя файла-сценария.
echo "${0##*/}" # Имя файла-сценария.
echo
filename=test.data
echo "${filename##*.}" # data
# Расширение файла.
${var%Pattern}, ${var%%Pattern}
Удаляет из переменной $var наименьшую/наибольшую подстроку, совпадающую с шаблоном $Pattern. Поиск ведется с конца строки $var.
Bash версии 2 имеет ряд дополнительных возможностей.
Пример 9-16. Поиск по шаблону в подстановке параметров
#!/bin/bash
# Поиск по шаблону в операциях подстановки параметров # ## % %%.
var1=abcd12345abc6789
pattern1=a*c # * (символ шаблона), означает любые символы между a и c.
echo
echo "var1 = $var1" # abcd12345abc6789
echo "var1 = ${var1}" # abcd12345abc6789 (альтернативный вариант)
echo "Число символов в ${var1} = ${#var1}"
echo "pattern1 = $pattern1" # a*c (между 'a' и 'c' могут быть любые символы)
echo