Proč nemusím Bach

Před nějakou dobou jsem psal projekt ve kterém jsem používal programovací jazyk Perl. I když na něj existuje spousta vtipů, tento jazyk se mi celkem líbí. Obzvlášť práce s regulérními výrazy. Dostal jsem se ale do stádia, kdy jsem již nemohl pokračovat dále a práce s Perlem se mi stala obtížná, ne-li nemožná. Šlo o to, že jsem z Perlu potřeboval spouštět Basch-ové příkazy a nemohl jsem se vypořádat s kombinací uvozovek (`'“) a lomítek a jiných speciálních znaků. Byla zde ještě možnost doinstalovat knihovnu speciálně určenou pro tyto věci, ale chtěl jsem, aby to fungovalo pokud možno na všech strojích.

S Peťošovou pomocí (nikdy předtím jsem v Bash-i nic tak složitého nepsal) jsem celý projekt přepsal do Bash-e. Spousta věcí byla rázem snadná a průhledná. Ale spousta věcí byla pro men nepochopitelná, neprůhledná a složitá.

Největší problém jsem měl s tímto:

neexistuje komplexní manuál

Veškeré věci je nutno řešit pomocí man a když neznám správnou fci, tak Google.

nezjistil jsem, jak jednoduše pracovat s regulárními výrazy

V Perlu je to velice jednoduché a pohodlné. Tady je na to několik fcí a ani jedna mi nevyhovovala. Buď nedělala co jsem potřeboval, nebo to bylo přespříliš složité, abych se s tím zabýval. Nakonec jsem to vyřešil pomocí vnořeného Bash-e grepu a awk. Sice se mi to moc nelíbí, ale stále elegantnější, že regulár v Bash-i.

neumí pracovat s float čísly

Toto je největší kámen úrazu a byl jsem nucen tento nedostatek obcházet. Jinak bych zanesl velkou chybu a to bylo nepřípustné. Když už Bash nějakým způsobem ukecáte aby bral desetinná čísla, tak nedokáže pobrat desetinné číslo s čárkou
3,14 != 3.14
. Celkem srozumitelné, ale v dnešní době je desetinná čárka běžná věc a výstupy z některých lokalizovaných nástrojů vrací čárku.

nepochopitelně lpí na používání a nepoužívání mezer

ŠPATNĚ: promenna = 3 SPÁRVNĚ: promenna=3 V jiných případech zase mezery vyžaduje. Při psaní asi jedna z nejproklínanějších vlastností.

při práci s proměnnými je potřeba používat metráky složených závorek, zavináčů a podobně

A nejen proměnných. Cykly o podobné základní fce mají taky celkem obskurní zápis (a zase ty mezery). Při deklaraci proměnné se zapisuje jen název, když s ní ale následně pracuji, tak musím použít $, nebo dokonce ${}. Chcete vědět mocnost pole? Není nic jednoduššího, než vypsat všechny speciální znaky co máte na klávesnici:array_size=${#array[@]}