RosettaCodeData/Task/Range-expansion/UNIX-Shell/range-expansion.sh

20 lines
426 B
Bash

#!/usr/bin/bash
range_expand () (
IFS=,
set -- $1
n=$#
for element; do
if [[ $element =~ ^(-?[0-9]+)-(-?[0-9]+)$ ]]; then
set -- "$@" $(eval echo "{${BASH_REMATCH[1]}..${BASH_REMATCH[2]}}")
else
set -- "$@" $element
fi
done
shift $n
echo "$@"
# to return a comma-separated value: echo "${*// /,}"
)
range_expand "-6,-3--1,3-5,7-11,14,15,17-20"