tr_case -v -1 myfilel myfile2…

Сразу же бросается в глаза заметное сокращение объема программного кода при использовании команды getopts. Код, применяемый для обработки файлов, аналогичен коду с командой shift.

Пример сценария:

$ pg tr_case2

#!/bin/sh

#tr_case2

# преобразование регистра, используется команда getopts

ЕХТ=""

TRCASE=""

FLAG=""

OPT="no"

VERBOSE="off"

while getopts :luv OPTION

do

case $OPTION in

l)

TRCASE="lower"

EXT=".LC"

OPT=yes

;;

u)

TRCASE="upper"

EXT=".UC"

OPT=yes

;;

v)

VERBOSE=on

;;

\?) echo "usage: `basename $0`: -[l|u] —v file[s]"

exit 1

;;

esac

done

#следующий аргумент, пожалуйста

shift `expr $OPTIND -1`

#есть аргументы ???

if [ "$#"="0" ] || [ "$OPT"="no" ] then

echo "usage: `basename $0`: -[l|u] — v file[s]" >&2

exit 1

fi

for LOOP in "$@" do

if [ ! — f $LOOP ] then

echo "`basename $0`: Error cannot find file $LOOP" >&2

exit 1

fi

echo $TRCASE $LOOP

case $TRCASE in

lower)

if [ "VERBOSE"="on" ]; then

echo "doing…lower on $LOOP..newflie called $LOOP$EXT"

fi

cat $LOOP | tr "[a‑z]" "[A‑Z]" >$LOOP$EXT

;;

upper) if [ "VERBOSE"="on" ]; then

echo "doing upper on $LOOP..newflie called $LOOP$EXT"

fi

cat $LOOP | tr "[A‑Z]" "[a‑z]" >$LOOP$EXT

;;

esac

done

При указании опций командной строки в сценариях было бы неплохо придерживаться соглашений о наименовании, принятых в UNIX либо Linux. В следующей таблице описываются некоторые общие опции и их значения.

ОпцияЗначение
-aдобавление
-cсчетчик, копирование
-dкаталог, устройство
-eвыполнение
-fимя файла, форсировать
-hсправка
-iигнорировать регистр
-1журнальный файл
-oполный вывод
-qполностью
-pпуть
-vмногословный
<p><strong>20.3. Заключение</strong></p>

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

Метод shift также позволяет преодолеть ограничения параметров $1…$9, проявляющиеся при их передаче сценариям. При использовании метода shift сценарий просто выполняет "смещение" среди всех вызываемых аргументов, благодаря чему можно выполнять дальнейшую обработку.

<p><emphasis><strong>ГЛАВА 21</strong></emphasis></p>

Создание экранного вывода

С помощью shell–сценариев можно создавать профессионального вида экраны, позволяющие реализовать интерактивное взаимодействие пользователя с системой. Для этого достаточно располагать цветным монитором и использовать команду tput.

В главе рассматриваются следующие темы:

   • применение команды tput;

   • использование escape–последовательностей и генерирование управляющих кодов;

   • pабота с цветом.

Известно, что существует три различных варианта команды tput. Наилучшим из них является команда tput GNU. Если в системе отсутствует эта версия команды, загрузите и установите ее. Команда tput использует файл /etc/terminfo или файл /etc/termcap. В shell–сценариях можно применять большинство команд, поддерживаемых терминалом.

Команда tput не распознает настройки цвета. Для работы с цветом используются управляющие символы.

<p><strong>21.1. Применение команды tput</strong></p>

Чтобы применить команду tput, следует инициализировать установки терминала, обращаясь к команде tput с помощью сценариев или командной строки.

$ tput init

Команда tput генерирует три различных потока вывода: строки, числовые и булевы значения (истина/ложь). Далее будут рассмотрены некоторые наиболее часто используемые свойства каждого потока вывода.

<p><emphasis><strong>21.1.1. Строчный поток вывода данных</strong></emphasis></p>

Ниже приводятся общие строки из потока вывода:

Перейти на страницу:

Похожие книги