28 lines
434 B
Bash
28 lines
434 B
Bash
#!/usr/bin/env bash
|
|
|
|
TAPM_READ_MASKED() {
|
|
local destination="$1"
|
|
local character=''
|
|
local value=''
|
|
|
|
while IFS= read -r -s -n 1 character; do
|
|
if [[ -z "$character" ]]; then
|
|
break
|
|
fi
|
|
case "$character" in
|
|
$'\177' | $'\b')
|
|
if [[ -n "$value" ]]; then
|
|
value="${value%?}"
|
|
printf '\b \b'
|
|
fi
|
|
;;
|
|
*)
|
|
value+="$character"
|
|
printf '*'
|
|
;;
|
|
esac
|
|
done
|
|
printf '\n'
|
|
printf -v "$destination" '%s' "$value"
|
|
}
|