함수가 마지막 위치 인수에 도달하면 while 조건이 종료되도록 이것을 조정하고 싶습니다.
console_codes ()
{
local exec=0
local narg="$#" iarg=0
while (( narg > 0 )); do
opt="$1" ; iarg=$(( iarg + 1 ))
case $opt in
("-V"|"--version")
printf '%s\n' "Version"
return 0
;;
("-h"|"--help")
printf "Help.\n"
return 0
;;
("-e"|"--exec") exec=1 ; shift 1 ;;
(*) shift 1 ;;
esac
done
}
답변1
Shift를 사용 중이므로 "$1"이 비어 있는지 확인하세요.
while true; do
[ -z "$1" ] && break
echo "$1"
shift
done
답변2
man getopt getopts
처음부터 구문 분석 옵션을 다시 만들기보다는 를 읽어야 합니다 .
$#
다음이 감소한다는 사실을 인식하면 루프를 보다 간결하게 수행할 수 있습니다 shift
.
while [[ $# -gt 0 ]] ; do
# some code using $1
shift
done