Portál AbcLinuxu, 10. května 2025 16:28
- 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.