Bash脚本将网格中的数字显示为星号

时间:2017-01-05 11:48:07

标签: bash matrix

ASCII bargraph

我可以使用许多编程语言实现这一点,但不知道如何在bash中执行此操作,因此我请求您帮助。

1 个答案:

答案 0 :(得分:1)

这需要调整以处理数字> 9(他们在最后一行太长了)。

#! /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 "$@"

首先找到最大数字。然后,它将最大值降低一到零,打印星号,大于这个数字"最大值"。