Řešení je jednoduché: místo proměnné použij další funkci:
premenna1=$(cat subor1)
premenna2 () { cat subor2; }
funkcia1 ()
{
if [ "$premenna1" == "nieco1" ]; then
echo nieco2 > subor2 # zapisu sa nove data
else
echo data nezapisujem
fi;
}
funkcia2 ()
{
if [ "$(premenna2)" == "nieco2" ]; then
echo cokolvek
else
echo niecoine
fi;
}
funkcia1
funkcia2
Obecně, proměnné jsou pouze nositeli konkrétní hodnoty, nemohou odkazovat na soubor či spouštět příkazy (což lze ovšem do určité míry obejít příkazem „eval“, když je potřeba).
Pokud chceš, aby se četlo z původního souboru, i když mezitím změníš aktuální adresář příkazem „cd“, bude definice funkce trochu složitější:
eval "premenna2 () { cat '$(realpath subor2)';}"
A ještě jeden tip: funkce je vlastně určitý druh proměnné, takže další definicí jí můžeš přiřadit nový kód, jako když do proměnné přiřazuješ novou hodnotu.