Portál AbcLinuxu, 7. listopadu 2025 04:51
- vytvořím soubor /tmp/go - nastavím práva x pro spuštění - spustím soubor /tmp/gojak můžu teď zjistit, jestli existuje nějaká proměnná kterou jsem sám nenadefinoval? Jedná se mi o to, abych čistě náhodou nepřepsal nějakou proměnnou pokud bych použil stejný název. Děkuji za pomoc
if declare -F -p názevproměnné &>/dev/null; then ...Ale zbytek dotazu, tedy to, k čemu se to snažíš použít, nedává smysl. Shell provádějící /tmp/go má vlastní proměnné prostředí.
[ "${VAR+existuje}" = existuje ] && echo "existuje" || echo "neexistuje"
if [ -v PROMENNA ] ; then echo 'Promenna PROMENNA nastavena' ; else echo 'Promenna PROMENNA nenastavena' ; fi
KDYZ existuje-li PROMNENA; TAK echo 'Promenna PROMENNA nastavena' ; NEBO echo 'Promenna PROMENNA' ; SLUS
[ "${VAR+existuje} " = existuje ] &&& echo "existuje " || echo "neexistuje "set -o posix ; settakže se nabízí třeba i něco jako:
( set -o posix ; set ) | grep -q -E "^KUK=.*" if [ "$?" -eq "0" ]; then echo 'existuje' ; else echo 'neexistuje'; fi
To výše uvedené funguj kde/v čem?
Přinejmenším v Bashi.
> bash -version | head -n1 GNU bash, version 3.2.39(1)-release (i586-suse-linux-gnu) > help test | grep -e '-v' > PROMENNA='que trabaja' > if [ -v PROMENNA ] ; then echo 'Promenna PROMENNA nastavena' ; else echo 'Promenna PROMENNA nenastavena' ; fi -bash: [: -v: unary operator expected Promenna PROMENNA nenastavena
$ -version | head -n1 GNU bash, verze 4.1.10(4)-release (i686-pc-cygwin) $ help test | grep -e '-v' $ PROMENNA='que trabaja' $ if [ -v PROMENNA ] ; then echo 'Promenna PROMENNA nastavena' ; else echo 'Promenna PROMENNA nenastavena' ; fi -sh: [: -v: očekáván unární operátor Promenna PROMENNA nenastavena
$ -version | head -n1 GNU bash, verze 4.1.10(4)-release (i686-pc-cygwin) $ bash $ help test | grep -e '-v' $ PROMENNA='que trabaja' $ if [ -v PROMENNA ] ; then echo 'Promenna PROMENNA nastavena' ; else echo 'Promenna PROMENNA nenastavena' ; fi bash: [: -v: očekáván unární operátor Promenna PROMENNA nenastavena
asi nějaká novinka
Ano. Ale nevím, od které verze Bashe byla uvedena. Budu se soustředit na něco přenositelnějšího (jak je zmíněno dolejc).

help test?
man bash
-v varname True if the shell variable varname is set (has been assigned a value).
Tzn. že není upozorněno, že je to "specialita".
info bash
-v VARNAME' True if the shell variable VARNAME is set (has been assigned a value).
Tzn. že se znovu nedozvíme, že se jedná o "specialitu".
bash --version | head -n1 GNU bash, verze 4.2.42(2)-release (x86_64-unknown-linux-gnu)
Mně to funguje.
Díky za upozornění.
set
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.