Функция whois может быть вызвана следующим образом:
$ whois davs peters superman
dave ls David Tansley — admin accts
peter ls Peter Stromer -customer services
whois: Sorry cannot find superman
Использование нумерации в текстовом файле
При использовании редактора vi появляется возможность нумерации строк. Это полезно в целях отладки, но при выводе на печать некоторых файлов с номерами строк потребуется команда nl. Ниже приведена функция, имитирующая действие команды nl (выполняет нумерацию строк файла). Исходный файл при этом не перезаписывается. Вот программный код функции.
number_file ()
#number_file
#вызов: number_file имя_файла {
_FILENAME=$1
# проверка наличия корректных параметров
if [ $# -ne 1 ]; then
echo "number_flie: I need a filename to number"
return 1
fi
loop=1
while read LINE do
echo "$LOOP: $LINE" loop=`expr $LOOP + 1`
done < $_FILENAME
}
Для вызова функции number_file просто укажите имя файла, подлежащего нумерации, в качестве аргумента функции. Вызов функции может также осуществляться из среды интерпретатора shell путем указания имени файла. Например:
$ number_file myfile
Кроме того, функцию можно вызвать из сценария, воспользовавшись с этой целью предыдущим примером. Или вы можете задать оператор:
$.number_file $1
Результат выполнения функции может выглядеть следующим образом:
$ number_file /home/dave/file_listing
1: total 105
2: -rw‑r—r—- 1 dave admin 0 Jun 6 20:03:DT
3: -rw‑r--r-- 1 dave admin 306 May 23 16:00 LPSO. AKS
4: -rw‑r--r-- 1 dave admin 306 May 23 16:00 LPSO. AKS. UC
5: -rw‑r--r-- 1 dave admin 324 May 23 16:00 LPSO. MBB
6: -rw‑r--r-- 1 dave admin 324 May 23 16:00 LPSO. MBB. UC
7: -rw‑r--r-- 1 dave admin 315 May 23 16:00 LPSO. MKQ
Преобразование символов в прописные
Иногда возникает потребность в преобразовании строчных символов в прописные. Например, для создания каталогов в файловой системе используются прописные символы. Кроме того, при вводе данных в поля может выполняться проверка, являются ли все символы прописными.
Ниже приводится соответствующая функция. Эта функция имитирует действие команды tr:
str_to_upper ()
#str_to_upper
# вызов: str_to_upper $1
{
STR=$1
# проверка на наличие корректных параметров
if [ $# -ne 1 ]; then
echo "number_file: I need a string to convert please"
return 1
fi
echo $@ |tr '[a‑z]' '[A‑Z]'
Переменной upper присваивается строка, символы которой преобразованы в прописные символы. Обратите внимание, что снова применяется специальный символ $@ для передачи всех аргументов. Функция str_to_upper может вызываться двумя способами. Можно указать строку в сценарии следующим образом:
UPPER=`str_to_upper "documents.live"`
echo $UPPER
либо указать аргумент функции вместо строки:
UPPER=`str_to_upper $1`
echo $UPPER
В обоих примерах используется подстановка для получения результатов, возвращаемых функцией.
is_upper
Функция str_to_upper осуществляет преобразование регистра символов. Но иногда перед выполнением дальнейшей обработки необходимо только знать, содержатся ли в строке прописные символы. Это может потребоваться для записи информации в текстовое поле файла. Функция i supper выполняет именно эту задачу. Применение
оператора if В сценарии позволит определить, будет ли передаваемая строка включать прописные символы.
Программный код функции:
is_upper ()
#is_upper
#вызов: is_upper $1
{
# проверка на наличие корректных параметров
if [ $# -ne 1 ]; then
echo "is_upper: I need a string to test OK"
return 1
fi
# применение awk для проверки на наличие прописных символов
_IS_UPPER=`echo $1 | awk '{if($0~/[^A‑Z]/) print "1"}`
if [ "$_IS_UPPER" != "" ]
then
# нет, не все символы являются прописными
return 1
else