我想通过两组检查来推送输入参数。每个检查都是一个功能。所以情况不会起作用,因为在KSH.Case将在满足第一个条件后“esac”。
die () {
echo "ERROR: $*. Aborting." >&2
exit 1
}
var=$1
var1=$2
[ -z "$var1" ] && var1=$var
echo "var is $var . Var1 is $var1 "
# test $var1 != $var2 ||
dtc() {
# small function where I am checking if the input parameter is a valid date
}
vlc(){
# function where I am checking if the input parameters year is after 2012, because earlier years cannot exist
}
if dtc $var && dtc $var1
then
if vlc $var && vlc $var1
then
stuff
else
die "message"
fi
else
die "message"
fi
嵌套看起来有点笨拙。如果有更优雅的方式将此传达给shell。
答案 0 :(得分:2)
改进缩进将对可读代码大有帮助。
如果您的die
消息不同,那么您别无选择。如果它们相同,那么您可以组合条件:
如果你只是想死,如果不是所有命令都成功,你可以写
dtc "$var" && dtc "$var1" &&
vlc "$var" && vlc "$var1" || die "message"
# OK, all passed
stuff
if-else的一个样式提示是先放置较短的块
if ! { dtc "$var" && dtc "$var1"; }
then
die "message 1"
else
if ! { vlc "$var" && vlc "$var1"; }
then
die "message 2"
else
we will do
lots of stuff
here
fi
fi
当然还有封装代码的函数
stuff() {
we will do
lots of stuff
here
}