iterator: повторение одной команды для разных аргументов

  1. #!/usr/bin/bash
  2.  
  3. # iterator COMMAND [ARGS..] --- [ITEMS_TO_BE_ITERATED..]
  4.  
  5. declare -a COMMAND iteration_items
  6.  
  7. target="COMMAND"
  8. for argument in "$@"; do
  9.     if [[ "$target" == "COMMAND" && "$argument" == "---" ]]; then
  10.         target="iteration_items"
  11.         continue
  12.     fi
  13.     if [[ "$target" == "COMMAND" ]]; then
  14.         COMMAND+=( "$argument" )
  15.     else # target == iteration_items
  16.         iteration_items+=( "$argument" )
  17.     fi
  18. done
  19.  
  20. for item in "${iteration_items[@]}"; do
  21.     "${COMMAND[@]/\{\}/$item}"
  22. done
Синтаксис вызова приведён в третьей строке.

Демонстрация работы http://ix.io/yDE

  • +5
  • views 1054
  • pavelshuvalov pavelshuvalov
  • comments 2

Реклама

Мы в соцсетях

tw tg yt gt