Az
if [ -z "$1" ]; then
formát kerested. A második példád erősen életveszélyes. (*) Az utolsó mondatoddal pedig nagyon nem értek egyet. Kifejezetten preventív céllal mindenkinek hozzá kéne szoknia ahhoz, hogy a $x helyett a "$x" formát használja shell-parancsfájlokban.
(*)
if ! [ $1 ] ; then
echo nem OK
fi
Ezt próbáld meg paraméter nélkül, vagy "" vagy " " , vagy pl. "-gt 0" paraméterrel meghívni.