Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 带否定条件的if语句_Linux_Bash - Fatal编程技术网

Linux 带否定条件的if语句

Linux 带否定条件的if语句,linux,bash,Linux,Bash,我试图做以下的陈述 if (!(zfs list -t snapshot -o name -H | grep -q secure) && (echo $days | grep -q $day) ) 因此,当第一个命令不返回任何内容,而第二个命令返回true时,应该执行该命令 如果我尝试 if ! zfs list -t snapshot -o name -H | grep -q secure && echo $days | grep -q $day; then

我试图做以下的陈述

if (!(zfs list -t snapshot -o name -H | grep -q secure) && (echo $days | grep -q $day) )
因此,当第一个命令不返回任何内容,而第二个命令返回
true
时,应该执行该命令

如果我尝试

if ! zfs list -t snapshot -o name -H | grep -q secure && echo $days | grep -q $day; then
  echo ok
fi
那我就不能让它失败。它总是打印
ok

问题


有人能看出我做错了什么吗?

这是一个解决办法,而不是答案,但是你可以使用
grep
本身使用
-v
来扭转测试的感觉:

if zfs list -t snapshot -o name -H | grep -qv secure && echo $days | grep -q $day; then
  echo ok
fi

虽然这与zfs list-t snapshot-o name-H完全不返回任何内容的情况不太一样。

我能够使其输出的唯一方法是zfs报告
安全
$days
包含
$days
。任何其他组合(即zfs不报告
secure
或$days
不包含
$day`)都不会产生任何输出

由于我没有
zfs
,我定义了一个函数:

function zfs () { echo secure ; } ; days=1; day=1; if ! zfs list -t snapshot -o name -H | grep -q secure && echo $days | grep -q "$day" ; then echo ok; fi
function zfs () { echo securX ; } ; days=1; day=1; if ! zfs list -t snapshot -o name -H | grep -q secure && echo $days | grep -q "$day" ; then echo ok; fi
function zfs () { echo securX ; } ; days=0; day=1; if ! zfs list -t snapshot -o name -H | grep -q secure && echo $days | grep -q "$day" ; then echo ok; fi
function zfs () { echo secure ; } ; days=0; day=1;if  ! zfs list -t snapshot -o name -H | grep -q secure && echo $days | grep -q "$day" ; then echo ok; fi

function zfs () { echo secure ; } ;  days=0; day=1; if ( ! ( zfs list -t snapshot -o name -H | grep -q secure) && (echo $days | grep -q "$day" ) ); then echo ok; fi
function zfs () { echo securX ; } ;  days=0; day=1; if ( ! ( zfs list -t snapshot -o name -H | grep -q secure) && (echo $days | grep -q "$day" ) ); then echo ok; fi
function zfs () { echo securX ; } ;  days=1; day=1; if ( ! ( zfs list -t snapshot -o name -H | grep -q secure) && (echo $days | grep -q "$day" ) ); then echo ok; fi
function zfs () { echo secure ; } ;  days=1; day=1; if ( ! ( zfs list -t snapshot -o name -H | grep -q secure) && (echo $days | grep -q "$day" ) ); then echo ok; fi