答案 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 "$@"
首先找到最大数字。然后,它将最大值降低一到零,打印星号,大于这个数字"最大值"。