#!/bin/bash # factorial # --------- # bash °¡ Àç±Í ÇÔ¼ö¸¦ Áö¿øÇÒ±î¿ä? # À½, ±×·¸±ä ÇÏÁö¸¸ Àç±Í ÇÔ¼ö¸¦ ¾²·Á¸é ¸Ó¸®°¡ µÚÁ×¹ÚÁ× µÉ °Ì´Ï´Ù. MAX_ARG=5 E_WRONG_ARGS=65 E_RANGE_ERR=66 if [ -z "$1" ] then echo "»ç¿ë¹ý: `basename $0` number" exit $E_WRONG_ARGS fi if [ "$1" -gt $MAX_ARG ] then echo "¹üÀ§ ÃÊ°ú(ÃÖ´ë 5)." # Çö½ÇÀûÀ¸·Î À̰ͺ¸´Ù ´õ Å« ¹üÀ§¸¦ ¿øÇÑ´Ù¸é # ½ÇÁ¦ ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ´Ù½Ã ÀÛ¼ºÇϱ⠹ٶø´Ï´Ù. exit $E_RANGE_ERR fi fact () { local number=$1 # "number"¸¦ Áö¿ª º¯¼ö·Î ¼±¾ðÇØ ÁÖÁö ¾ÊÀ¸¸é Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù. if [ "$number" -eq 0 ] then factorial=1 # 0 ÀÇ ÆÑÅ丮¾ó = 1. else let "decrnum = number - 1" fact $decrnum # Àç±Í ÇÔ¼ö È£Ãâ. let "factorial = $number * $?" fi return $factorial } fact $1 echo "$1 ÀÇ ÆÑÅ丮¾óÀº $? ÀÔ´Ï´Ù." exit 0