Как я могу перенаправить текст, чтобы затем написать в строке с указанным номером?

В итоге я получил следующую функцию BASH, использующую массив для переноса идентифицированных диапазонов. Входная строка является первым аргументом функции, а результат передается через второй аргумент :

.
function compact_range {
  arr=()
  start=""
  for cpu in ${1//,/ }; do
    # Start a new range definition if necessary
    [ -z "$start" ] && start=$cpu && range=$cpu && last=$cpu && continue
    prev=$(( $cpu - 1 ))
    # If the current CPU is not adjacent to the last CPU, start a new range
    [ "$prev" -ne "$last" ] && arr+=($range) && start=$cpu && range=$cpu && last=$cpu && continue
    # Current CPU is adjacent to an existing range, expand the current range
    range="${start}-${cpu}" && last=$cpu
  done
  # Append the last range to the array of ranges
  arr+=($range)
  # Return a comma delimited list of ranges
  eval $2=$(IFS=,;printf "%s" "${arr[*]}")
}

Спасибо всем за идеи.

-1
20.10.2020, 18:07
0 ответов

Теги

Похожие вопросы