четверг, 8 апреля 2010 г.

bash functions

Недавно выяснил одну интересную штуку. Оказывается функции в bash-скриптах являются как-бы аналогами консольных утилит: их можно вызывать с параметрами и даже перенаправлять ввод-вывод! Всё как оказывается в высшей степени логично.

Приведу небольшой пример:
#!/bin/bash

function source
{
cat /dev/clipboard
}

function nice_fmt
{
sed -re 's/^([0-9]) /0\1 /'
}

source | gawk -F "\t" '{ print $1, $2 }' | nice_fmt
source | gawk -F "\t" '{ print $3, $4 }' | nice_fmt

В данном скриптике(который я использую для форматирования расписания с одного сайта) определено 2 функции: source и nice_fmt
source выдаёт в stdout текст из буфера обмена(дело происходит в cygwin),
а nice_fmt принимает на stdin текст и добавляет лидирующий 0 где необходимо.

И действуют они как обычные программы. Выход source я обрабатываю gawk-ом, и потом форматирую вывод.

Я бы сказал, что это по гиковски прекрасно :)

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