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:

# 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.

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

if [ -z "${2:-}" ]; then


nebo si budeš kontrolovat nikoliv inicializaci konkrétního argumentu, ale jejich počet

if [ $# -gte 2 ]; then