首页 > 解决方案 > Shell:在 coomandline 参数上的两个循环

问题描述

在 shell 脚本中,我使用 shift 命令对位置参数进行了循环。在循环之后,我想重置并开始另一个循环参数。是否可以重新开始?

while [ $# -gt 0 ]; do
  case "$1" in
    "--bla")
      doing sth
      shift 2
      ;;
    *)
      shift 1
      ;;
  esac
done

标签: bashshell

解决方案


您可以将参数保存在临时数组中。然后从中恢复位置参数。

args=("$@")  # save

while .....
done

set -- "${args[@]}"  # restore

推荐阅读