如果不是每个命令的一般条件

时间:2015-05-20 13:33:06

标签: bash if-statement

我搜索了if if not commands,找到了很多特定命令的答案,但是如果我想要任何命令的东西,怎么办呢?我想知道是否有办法让每一个条件都能扭转它的结果...而不是像知道-eq和-ne ......

我想要做的不是这个

while [ -z ${!specificCommands[$d]} ]

并且不是为了这个

for (( d=1; d<=$qtyOfParamInACommand; d++ ))

尝试

for (( d=1; ![d<=$qtyOfParamInACommand]; d++ ))

但结果不符合预期

所以不仅仅是正常的...这可能是简单的语法。我将非常感谢这个命令的具体答案,但我的观点是在C中反向使用!

1 个答案:

答案 0 :(得分:2)

与之相反:

while   [ -z ${!specificCommands[$d]} ]

是以下任何一种:

while ! [ -z ${!specificCommands[$d]} ]
while   [ -n ${!specificCommands[$d]} ]

请注意,您还需要引用变量,或使用不需要引号的双括号。如果不这样做,当${!specificCommands[$d]}为空字符串时,您将遇到麻烦。

# better
while ! [ -z "${!specificCommands[$d]}" ]
while   [ -n "${!specificCommands[$d]}" ]

# best
while ! [[ -z ${!specificCommands[$d]} ]]
while   [[ -n ${!specificCommands[$d]} ]]

否定:

for ((d = 1; d <= qtyOfParamInACommand; d++))

是:

# note: broken
for ((d = 1; !(d <= qtyOfParamInACommand); d++))
for ((d = 1; d > qtyOfParamInACommand; d++))

请注意,$内部不需要((...))

另外,实际上你不会否定这个条件,你会翻转整个循环以使它向后计数。我上面写的循环实际上已经破了。这是一个更恰当的“对立面”:

for ((d = qtyOfParamInACommand; d >= 1; d--))