我正在自学bash,并使用学习bash Shell这样做.
我注意到在流控制中我们定义了一个if/else语句:
if [ statement_is_true ]; then # do stuff here elif [ some_other_statement]; then # other thing else # if all else fails fi
以及一个案例陈述:
case $expr in case1 ) ;; case2 ) ;; esac
但是for循环可能被定义为
for i in $list; do # something cool with the various $i done
和一个循环作为
while [ condition ]; do # something that loops done
为什么结束for
,while
以及until
循环标注done
,而不是rof
,elihw
和litnu
分别,喜欢if/fi
和case/esac
建设?(或者,它为什么不if/fi
代替if/done
?
我怀疑它只是可读性,因为litnu
它比阅读/发音要困难得多esac
.例如,请参阅本书,其中" 因显而易见的原因而end
得分nigeb
".
fi
并且esac
易于发音并与其他代码区分开来.该do...done
结构还在循环结构中提供了一致的语法,这可能比所有控制流语句中的一致语法更明智.