我很难弄清楚如何做这个if语句。我想这样做:
IF(该函数只有一个参数 AND $ 1是一个目录(在当前 文件夹))或IF(函数有2 参数AND $ 1不是目录)那么
....
END
对不起,如果不是很清楚,
提前致谢
答案 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