Portál AbcLinuxu, 12. května 2025 06:12
#!/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í.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.