- 1
_BUILD_FORMAT=`echo ${_FILE_NAME} | awk -F'.' '{ if($5=="gz")printf("%s",1);else printf("%s",2)}'`
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+127.8
_BUILD_FORMAT=`echo ${_FILE_NAME} | awk -F'.' '{ if($5=="gz")printf("%s",1);else printf("%s",2)}'`
Имя файла имеет вид: xxx.version.src.tar.gz
Эта проверка на то, какое расширение (и, соответственно, версия того, что внутри. О методе per se не буду, потому что нецензурно). Все бы ничего, пока имя файла не попадает, скажем, ./xxx.version.src.tar.gz
Oleg_quadro 23.11.2009 17:46 # 0
nil 23.11.2009 17:53 # 0
Oleg_quadro 23.11.2009 23:00 # 0
====
Вот так это можно написать на Perl:
echo ${_FILE_NAME} | perl -e 's|^.*/(.*)$|$1|; @a = split ".", $_; if ($a[#a] eq "gz") { printf "%s", $a[0]} else {printf "%s", $a[1]}'
Предупреждаю: пример не проверял, но вроде всё правильно.
Здесь можно прочитать про однострочный perl http://habrahabr.ru/blogs/perl/70610/
nil 23.11.2009 23:33 # 0
Я б тогда вместо перла emacs batch использовал, он еще мощнее. Как написано без перла будет работать на любой машине в любом состоянии и в любом ранлевеле. Не люблю перл, считаю его бесполезным.
Что же до примера, его в том месте достаточно было написать средствами чистого стандарта шелла:
case "$_FILE_NAME" in *gz) echo 1;; *) echo 2;; esac
В большинстве случаев тяжелую артиллерию тащить совершенно не нужно
nil 23.11.2009 23:39 # 0
Oleg_quadro 24.11.2009 11:32 # 0
Язык, который очень хорошо продуман.
Suor 27.11.2009 14:00 # 0
nil 27.11.2009 23:54 # 0