вторник, 13 июля 2010 г.

Фишки bash, которые помогут иногда не пользоваться sed

Аналог echo $VAR | sed -e 's/.txt$/.htm/' - если нужно сменить расширение файла, например
stasikos@pip-boy4000:~$ VAR=something.txt
stasikos@pip-boy4000:~$ echo ${VAR/.txt/.htm}
something.htm

Или совсем убрать
stasikos@pip-boy4000:~$ echo ${VAR%.txt}
something

Поменять регистр символов
stasikos@pip-boy4000:~$ echo ${VAR^^}
SOMETHING.TXT

stasikos@pip-boy4000:~$ VAR=SoMeThInG.txt
stasikos@pip-boy4000:~$ echo ${VAR,,}
something.txt

Теперь немножко про удобную замену такой вещи как
if [ -z "$VAR" ] ; then ...
fi

stasikos@pip-boy4000:~$ VAR=some
stasikos@pip-boy4000:~$ echo ${VAR:-default_value}
some
stasikos@pip-boy4000:~$ VAR=''
stasikos@pip-boy4000:~$ echo ${VAR:-default_value}
default_value
Это можно использовать при чтении, скажем, конфигурационного файла для скрипта, или для определения дефолтных значений при отсутствии значений переменных окружения

Или выкинуть ошибку если значение переменной не установлено:
stasikos@pip-boy4000:~$ echo ${VAR:?was not configured}
bash: VAR: was not configured

Больше интересного чтива можно найти в man bash по словам "Parameter Expansion"

Комментариев нет:

Отправить комментарий