#!/usr/bin/env bash set -Eeuo pipefail escape () { local s s=${1//&/\&} s=${s//\<} s=${s//>/\>} s=${s//'"'/\"} printf -- %s "$s" return 0 } file="$1" total="$2" body=$(escape "$3") info="/run/shm/msg.html" if [[ "$body" == *"..." ]]; then body="
${body/.../}
" fi while true do if [ -s "$file" ]; then bytes=$(du -sb "$file" | cut -f1) if (( bytes > 1000 )); then if [ -z "$total" ] || [[ "$total" == "0" ]]; then size=$(numfmt --to=iec --suffix=B "$bytes" | sed -r 's/([A-Z])/ \1/') else size=$(printf '%.1f\n' "$((bytes*100*100/total))e-2") size="$size%" fi echo "${body//(\[P\])/($size)}"> "$info" fi fi sleep 1 & wait $! done