57 lines
1.1 KiB
Bash
57 lines
1.1 KiB
Bash
#!/bin/bash
|
|
|
|
usage() { echo "Usage: $0 [-c bar|dot|o] [-s str] [-z] VALUE" 1>&2; ${1:+echo $1} ; exit 1; }
|
|
|
|
while getopts ":c:s:hz:" o; do
|
|
case "${o}" in
|
|
c)
|
|
case ${OPTARG} in
|
|
"bar") replace="" ;;
|
|
"dot") replace=*\"\' ;;
|
|
"o"|"O") replace="Oo.";;
|
|
*) usage "-c option only accepts \"bar\", \"dot\" or \"o\"" ;;
|
|
esac
|
|
;;
|
|
s)
|
|
if test $(echo -n ${OPTARG} | wc -c ) -eq 3 ; then
|
|
replace=${OPTARG}
|
|
else
|
|
usage "-s option requires a 3-character-long string"
|
|
fi
|
|
;;
|
|
z)
|
|
z=-n
|
|
;;
|
|
*)
|
|
usage "Invalid argument: $o $OPTARG"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
shift $((OPTIND-1))
|
|
|
|
test $# -ne 1 && usage
|
|
|
|
value=${value:-$1}
|
|
|
|
test $value -ge 0 -a $1 -le 100 || usage "VALUE must be an integer between 0 and 100"
|
|
|
|
for j in {3..100..3} ; do
|
|
if [[ j -gt $value ]] ; then
|
|
case $(($value%3)) in
|
|
0) res=$res"";;
|
|
1) res=$res".";;
|
|
2) res=$res":";;
|
|
esac
|
|
break
|
|
fi
|
|
res=$res"|"
|
|
done
|
|
|
|
res=$res" "
|
|
res=[${res:1:32}]
|
|
|
|
test $replace && res=$(echo "$res" | tr "|:." "$replace")
|
|
|
|
echo $z "$res"
|