有没有办法编写一个更优雅的代码,它考虑多种可能的组合而不是编写冗长的if-else语句?在bash中改进long if-else语句
我有随机生成的数据集像下面的那些,但有些行有时可能为空。
{
semester1 grade1 final_grade1
semester1a grade1a final_grade1a
}{
semester2 grade2 final_grade2
semester2a grade2a final_grade2a
}
我已经WR我的数据的所有可能的逻辑组合伊顿代码:
if [[ -n $semester1 && -z $semester1a && -z $semester2 && -z $semester2a ]]; then
echo "Section 1:$semester1=$grade1, final grade for $semester1=$final_grade1 ."
elif [[ -n $semester1 && -n $semester1a && -z $semester2 && -z $semester2a ]]; then
echo "Section 1:$semester1=$grade1, $semester1a=$grade1a, final grade for $semester1=$final_grade1, final grade for $semester1a=$final_grade1a."
elif [[ -n $semester1 && -n $semester1a && -n $semester2 && -z $semester2a ]]; then
echo "Section 1:$semester1=$grade1, $semester1a=$grade1a, final grade for $semester1=$final_grade1, final grade for $semester1a=$final_grade1a."
echo "Section 2:$semester2=$grade2, final grade for $semester2=$final_grade2 ."
elif [[ -n $semester2 && -z $semester2a && -z $semester1 && -z $semester1a ]]; then
echo "Section 2:$semester2=$grade2, final grade for $semester2=$final_grade2 ."
elif [[ -n $semester2 && -n $semester2a && -z $semester1 && -z $semester1a ]]; then
echo "Section 2:$semester2=$grade2, $semester2a=$grade2a, final grade for $semester2=$final_grade2, final grade for $semester2a=$final_grade2a, ."
elif [[ -n $semester2 && -n $semester2a && -n $semester1 && -z $semester1a ]]; then
echo "Section 1:$semester1=$grade1, final grade for $semester1=$final_grade1 ."
echo "Section 2:$semester2=$grade2, $semester2a=$grade2a, final grade for $semester2=$final_grade2, final grade for $semester2a=$final_grade2a, ."
elif [[ -n $semester2 && -n $semester2a && -n $semester1 && -n $semester1a ]]; then
echo "Section 1:$semester1=$grade1, $semester1a=$grade1a, final grade for $semester1=$final_grade1, final grade for $semester1a=$final_grade1a, ."
echo "Section 2:$semester2=$grade2, $semester2a=$grade2a, final grade for $semester2=$final_grade2, final grade for $semester2a=$final_grade2a, ."
fi
有没有检查这更好的办法?
什么定义更好?任何代码行数较少的代码可能更难以让另一个人维护。至少在这里,意图是什么是无法理解的。 (将被bash精英的成员证明是错误的;-)。祝你好运。 – shellter
[codereview.se]通常更欢迎在没有提出特定技术问题的情况下改进工作代码的问题。 –
我喜欢这个问题。真值表(这本质上是这样)是可爱的,但很少有脚本语言似乎支持它们作为数据结构。对我来说,这感觉就像是在计算机科学中错过了一次机会。 – sampablokuper