2014-12-06 191 views
2

我想测试传递给Linux shell脚本的参数数量。如果参数的数量不是24,它应该打印一些东西。不幸的是它不起作用。任何人都可以解释我做错了什么?bash脚本中的参数数量

#!/bin/bash 
if [[ $# -ne 2 ]] || [[ $# -ne 4 ]]; 
then 
    echo "here"; 
fi 
+0

可能重复[检查参数bash脚本的数量](http:// stackoverfl ow.com/questions/18568706/checking-number-of-arguments-bash-script) – Maximin 2014-12-06 18:42:22

回答

2

此时应更换逻辑OR通过逻辑AND,所以:

#!/bin/bash 

if [[ $# -ne 2 && $# -ne 4 ]]; then 
    echo "here" 
fi 

在算术形式:

#!/bin/bash 

if (($# != 2 && $# != 4)); then 
    echo "here" 
fi 

正如你所看到的,没有必要使用2 [[ ]]

1

逻辑。

if [[ $# -ne 2 ]] && [[ $# -ne 4 ]]; then 
    echo "here" 
fi 
+0

是的,我读过它,并且我完全理解了这个问题 – ciuak 2014-12-06 18:42:13

+0

我在bash中试过了,它运行了 – ciuak 2014-12-06 18:43:17

+0

它是'-ne'(不等于) – ciuak 2014-12-06 18:45:27