![마지막 위치 매개변수에 도달하면 while 루프를 종료합니다.](https://linux55.com/image/197454/%EB%A7%88%EC%A7%80%EB%A7%89%20%EC%9C%84%EC%B9%98%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EC%97%90%20%EB%8F%84%EB%8B%AC%ED%95%98%EB%A9%B4%20while%20%EB%A3%A8%ED%94%84%EB%A5%BC%20%EC%A2%85%EB%A3%8C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
함수가 마지막 위치 인수에 도달하면 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