使用“-z”测试 $1 或 $2 是否为空 - BASH

Fre*_*ers 1 scripting bash shell-script

我在同一个脚本中进行多个突袭监控,如果 EITHER 变量返回 null,我想让脚本发送警报/变红。

我尝试阅读并认为我拥有它,但我尝试的结果从未失败。

对于测试,我让它 grep 失败,这应该导致它失败,但到目前为止,我无法让它失败,它实际上总是通过。

测试环境如下所示:

var="$(sudo /usr/StorMan/arcconf GETCONFIG 1 LD 0 | grep Optimal)"
var1="$(sudo /usr/StorMan/arcconf GETCONFIG 1 LD 1 | grep fail)"
Run Code Online (Sandbox Code Playgroud)

这适用于 1 个变量

if [ -z "$var" ]
Run Code Online (Sandbox Code Playgroud)

我试过了

if [ -z "$var" ] && [ -z "$var1" ]
if [ -z "$var" && -z "$var1" ]
if [[ -z "$var" && -z "$var1" ]]
Run Code Online (Sandbox Code Playgroud)

但无济于事,我相信有人会立刻知道我做错了什么,我很感激阅读这篇文章所花费的时间!

Tho*_*key 5

使用||而不是&&,例如,

if [ -z "$var" ] || [ -z "$var1" ]
Run Code Online (Sandbox Code Playgroud)

庆典手动解释它:

ANDOR列表是一个或多个管道的序列,分别由控制运算符&&和分隔||ANDOR列表以左结合性执行。