如何在shell中创建这个if语句

时间:2010-01-17 15:23:43

标签: shell if-statement

我很难弄清楚如何做这个if语句。我想这样做:

  

IF(该函数只有一个参数   AND $ 1是一个目录(在当前   文件夹))或IF(函数有2   参数AND $ 1不是目录)那么

....
     

END

对不起,如果不是很清楚,

提前致谢

2 个答案:

答案 0 :(得分:0)

你几乎已经说过问题需要:

if [ $# = 1 -a -d "$1" ] || [ $# = 2 -a ! -d "$1" ]
then
    ...
fi

你也可以使用其他运算符 - 这将在Bourne shell中运行,更不用说Korn或其他POSIX shell(假设$#在函数中正常工作 - 它在Bash中运行)。

fun()
{
    if [ $# = 1 -a -d "$1" ] || [ $# = 2 -a ! -d "$1" ]
    then echo "Pass ($1, $#)"
    else echo "Fail ($1, $#)"
    fi
}

fun $HOME
fun $HOME abc
fun $HOME/xyz abc
fun /dev/null

答案 1 :(得分:0)

if [[ $# == 1 && -d "$1" ]]; then
  echo "one param, first is a dir"
elif [[ $# == 2 && ! -d "$1" ]]; then
  echo "two params, first is not a dir"
else
  echo "unexpected"
fi