27 lines
375 B
Bash
27 lines
375 B
Bash
#!/usr/bin/env bash
|
|
|
|
fold() {
|
|
shopt -s checkwinsize
|
|
(
|
|
:
|
|
:
|
|
)
|
|
width="${1:-$COLUMNS}"
|
|
while read -r line; do
|
|
: "${line// / }"
|
|
IFS=$'\n' read -d "" -ra words <<<"${line// /$'\n'}"
|
|
ll=0
|
|
for word in "${words[@]}"; do
|
|
wl="${#word}"
|
|
if ((ll + wl > width)); then
|
|
printf '\n'
|
|
else
|
|
((ll += wl))
|
|
printf '%s ' "$word"
|
|
fi
|
|
done
|
|
done
|
|
}
|
|
|
|
fold "$@"
|