#!/usr/bin/env bash wrap() { local width="$1" local len=0 while read -r -a line; do for word in "${line[@]}"; do ((len += "${#word}" + 1)) #printf '%s' "$len" if ((len >= width)); then printf '\n' # ruler "$width" len=${#word} fi printf '%s ' "$word" done done printf '\n' } ruler() { for ((i = 0; i < $1; i++)); do printf '%s' "${2:--}" done printf '\n' } if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then wrap "$@" fi