Portál AbcLinuxu, 14. listopadu 2025 13:33
#!/bin/bash
function fce_one ()
{
local SKP ABV SSD
SKP="111"
ABV="222"
SSD="333"
fce_two "$SSD"
}
function fce_two ()
{
echo "$SKP $ABV $SSD"
}
fce_one
Řešení dotazu:
Proč není jen 333?
Viz vysvětlení odkazující na man bash.
všechny proměnné aby se nedostaly mimo tu funkci
Jaký je účel? Obvykle přeci stačí, aby funkce označila svoje proměnné jako local a nepoškodila tak cizí.
Já jsem totiž (mylně) předpokládal, že se bash korektně (z pohledu jiných jazyků) popere s překryvem lokální/globální proměnné. Pak by totiž celý problém byl v tom, že se používají globální proměnné. Bohužel, následující kód
#!/bin/bash
fce1() {
local GLOBAL
GLOBAL="prepsano"
fce2
}
fce2() {
echo "GLOBAL = $GLOBAL"
}
GLOBAL="prvni"
fce2
GLOBAL="druhy"
fce1
fce2
vypíše
GLOBAL = prvni GLOBAL = prepsano GLOBAL = druhy
což je poněkud matoucí.
fce_one &Díky
Díky a můžu to napsat třeba v php? Pokud ano, jde ta funkce pak zavolat a spustit na pozadí?
Ano. Ano. (A co doopravdy potřebujete?)
Ne. Ne.
Já si myslím, že stejné funkcionality jako je ukázka jde dosáhnout i v PHP. A funkci shellu lze pustit na pozadí.
Wydláci mají naučenou takovou zvláštní dichotomii – všechno buď musí být blbovzdorný grafický klikátko, nebo se musí programovat těmi nejhrubšími protředky. V unixu je obojí extrémní případ kterému je radno se vyhnout.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.