论证检查bash

时间:2013-01-30 08:32:39

标签: shell

我正在尝试检查传递给脚本的参数。它应该至少有2个参数,最多可以有3个参数。如果存在,则第3个参数应为“-I”。我虽然能做到这一点,但它不起作用。

if [  \( ! $# = 2 \) -o \( $# = 3 -a "$3" != "-I" \)  ];then
exit 0
fi

我做错了什么?关于如何使其发挥作用的任何建议?

2 个答案:

答案 0 :(得分:2)

bash中,您可以执行以下操作:

#!/bin/bash

if [[ $# -eq 3 ]] ; then
    if "$3" != "-I ]] ; then
        echo "Argument 3 must be '-I' if present"
        exit
    fi
fi

if [[ $# -ne 2 && $# -ne 3 ]] ; then
    echo "Needs two or three arguments"
    exit
fi

echo "[$1]"
echo "[$2]"
echo "[$3]"

答案 1 :(得分:0)

试试这个

#!/bin/bash
MAX_ARGUMENTS=3
echo $#
if [ $# -eq $MAX_ARGUMENTS ]
then
    echo "hi"
    last=${!#}
    if [ $last == "-l" ]
    then
            echo "its l"
    else
            echo "its not l"
    fi
    else
    echo "bye"
fi