/ / Bash script exibindo números em uma grade como asteriscos [closed] - bash, matrix

Bash script exibindo números em uma grade como asteriscos [closed] - bash, matrix

Bargraph ASCII

Eu posso conseguir isso com muitas linguagens de programação, mas não tenho idéia de como fazê-lo no bash, então eu estou pedindo ajuda.

Respostas:

1 para resposta № 1

Isso precisa de ajustes para manipular números> 9 (eles são muito longos na última linha).

#! /bin/bash
main () {
local numbers=("$@")

local max=${numbers[0]}
local i
for i in $(seq 2 ${#numbers[@]}) ; do
if (( numbers[i-1] > max )) ; then
max=${numbers[i-1]}
fi
done

while ((max--)) ; do
for i in $(seq 1 ${#numbers[@]}) ; do
if (( numbers[i-1] > max )) ; then
printf "* "
else
printf "  "
fi
done
printf "n"
done

printf "%d " "${numbers[@]}"
printf "n"

}

main "$@"

Ele primeiro encontra o número máximo. Em seguida, reduz o máximo de um para zero, imprimindo asteriscos para números maiores que esse "máximo".