ansitest/commasep-num.mrg
2021-04-09 15:45:24 -05:00

26 lines
821 B
Bash

#!/bin/bash
# Returns a passed number as comma-separated e.g. pass $1 = 80000000000 and receive 80,000,000,000
# REF: https://unix.stackexchange.com/questions/113795/add-thousands-separator-in-a-number
function commanum () {
LC_NUMERIC=en_US printf "%'.f" $1
}
# test for interactive shell / OK to echo text
#[ $(echo $- |grep i |wc -l) -gt 0 ] &&
[ ! "$1" = "" ] && commanum $1
exit;
# Example usage:
#$ tmpvar=$(./commasep-num.mrg 80000000000)
#$ echo $tmpvar
#80,000,000,000
# Limitation: it doesn't handle fractional numbers x.xx , just integers - anything after the decimal gets dropped
# so don't try to display π (pi) with it ;-)
# this appears to work somewhat with fractionals but is not bash-internal:
#$ echo 1232323.1415927 | awk '{printf(fmt,$1)}' fmt="%'19.19f\n"
#1,232,323.1415927000343799591