Konflikt flagy set -u s kontrolou, zda byl definován parametr

Hoj,

narazil jsem na takový problém při psaní bash skriptu.

Mám nastavenou flag:

Kód: [Vybrat]
# Exit on use of undeclared variable.
set -u

která funguje hezky. Problém je, když kontroluju např. ve funkci jestli byly předány argumenty.

Kód: [Vybrat]
if [ -z "$2" ]; then
....

No a problém je ten že když $2 skutečně nebyl předán tak se ta podmínka vůbec nevykoná, namísto skript skončí, jelikož undeclared variable.

Dá se toto nějak zkloubit?

Díkyy :))


Re:Konflikt flagy set -u s kontrolou, zda byl definován parametr
« Odpověď #1 kdy: 17. 08. 2018, 11:59:18 »
lze přes syntaxi v bashi doplnit výchozí prázdnou hodnotu, tím to funguej s set -u
Kód: [Vybrat]
if [ -z "${2:-}" ]; then

nebo si budeš kontrolovat nikoliv inicializaci konkrétního argumentu, ale jejich počet
Kód: [Vybrat]
if [ $# -gte 2 ]; then