ここで何が起こっているのか、そしてその理由を理解しようとしていますか?
「why」という名前の関数が最初に呼び出され、次に結果は関数への別の呼び出しまたは完全な終了のいずれかになります。期待される結果は、ifステートメントの下でループを実行することはできません。これはif-else-fiステートメントまたはif-elif-else-fiである可能性があり、重要ではありません。
問題は、なぜそれがエコーエンドなのかということです。
最後のエコーを呼び出すことができる理由がわかりません。
why () {
read -p 'Loop now? [y/n]' answer
case $answer in
y | Y | yes | YES ) answer="y";;
*) exit;;
esac
}
if [ $answer = 'y' ]
then
why
fi
why
echo "End"