Shell 条件问题

Shell 条件问题,shell,sh,Shell,Sh,如何编写完成两件事的POSIX shell脚本: 1) 定义了$var1或$var2且不为空时,回显“success” 2) 当$var3定义为任意值时,回显“success2” 我尝试了许多-ne-z和-a操作符的组合,但没有成功。(我在POSIX模式下的Bash shell中测试了以下内容-我不能绝对肯定所有这些都是严格的POSIX) 第一个条件[-n“$var1”-o-n“$var2”]利用了一个事实,即NOTNULL要求也意味着设置了变量 第二种情况更为棘手“${var3+X}”设置为空

如何编写完成两件事的POSIX shell脚本:

1) 定义了$var1或$var2且不为空时,回显“success”
2) 当$var3定义为任意值时,回显“success2”

我尝试了许多-ne-z和-a操作符的组合,但没有成功。

(我在POSIX模式下的Bash shell中测试了以下内容-我不能绝对肯定所有这些都是严格的POSIX)

第一个条件
[-n“$var1”-o-n“$var2”]
利用了一个事实,即NOTNULL要求也意味着设置了变量


第二种情况更为棘手<如果
var3
未设置,则将代码>“${var3+X}”设置为空,如果设置为
X
。这样,您就可以区分未设置变量和空变量。

谢谢。我忽略了变量调用周围的引号,这似乎会产生不同的结果。
$ var1=
$ var2=
$ if [ -n "$var1" -o -n "$var2" ]; then echo "success"; fi
$ var2=1
$ if [ -n "$var1" -o -n "$var2" ]; then echo "success"; fi
success
$ var3=
$ if [ -n "${var3+X}" ]; then echo "success2"; fi
success2
$ unset var3
$ if [ -n "${var3+X}" ]; then echo "success2"; fi
$