答案 0 :(得分:3)
一方面,我不想只是给出一个答案。另一方面,我认为我已经做了这个令人费解的事情,或许,在试图弄清楚它是如何工作方面有一些教育价值。祝你好运!
#!/bin/sh
while i=$( expr ${i-0} ${op-+} 1 ); do
j=$i
t=$( expr 2 \* $i - 1 )
printf %$( expr \( $( expr 2 \* ${1-6} - 1 ) - $t \) / 2 )s
while test $(( j-- )) -gt 0; do printf '* '; done
echo
test $i = ${1-6} && op=-
done
这是一个不错的变体:
#!/bin/sh
while i=$( expr ${i-0} ${op-+} 1 ); do
printf %$( expr $(( 2 * $(( ${1-6} - $i )) )) / 2 )s
printf \*%$(( $i - 1 ))s | sed 's/ / */g'
test $i = ${1-6} && op=-
done