Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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
Bash 条件(如果不是每个命令的常规条件)_Bash_If Statement - Fatal编程技术网

Bash 条件(如果不是每个命令的常规条件)

Bash 条件(如果不是每个命令的常规条件),bash,if-statement,Bash,If Statement,我搜索了if-not命令,找到了很多关于特定命令的答案,但是如果我想要任何命令的东西,怎么做呢?我想知道是否有一种方法可以让每种情况都逆转它的结果。。。不喜欢知道-eq和-ne 我想做的不是这个 while [ -z ${!specificCommands[$d]} ] 这不是一个好主意 for (( d=1; d<=$qtyOfParamInACommand; d++ )) ((d=1;d与以下相反): while [ -z ${!specificCommands[$d]} ]

我搜索了if-not命令,找到了很多关于特定命令的答案,但是如果我想要任何命令的东西,怎么做呢?我想知道是否有一种方法可以让每种情况都逆转它的结果。。。不喜欢知道-eq和-ne

我想做的不是这个

while [ -z ${!specificCommands[$d]} ]
这不是一个好主意

for (( d=1; d<=$qtyOfParamInACommand; d++ ))
((d=1;d与以下相反):

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++))

可能的副本是否也适用于while命令?还是在命令的中间?例如,对于这个,我如何使中间的条件不成立,语法正确?(d=1;我们谈论的语言是什么?Linux,我会在标题中添加它吗?你尝试用一个空格?<代码>![dthx!我只是想知道,对于for,为什么条件不能在[]方括号之间?我希望那些[]方括号可以用来括起任何类型的条件?方括号是一个非常具体的命令。
[
只是
测试
命令的同义词,它要求最后一个参数是
]
这样看起来像语法。结果是一代又一代的shell程序员感到困惑,没有任何实际的好处。啊!!然后我明白了…所以如果我得到它,在for中,test命令在默认情况下已经存在,所以不需要[]
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--))