最後の位置パラメータに達すると、whileループを終了します。

最後の位置パラメータに達すると、whileループを終了します。

関数が最後の位置引数に達すると、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

おすすめ記事