如何在Shell脚本中绘制下面的星形图案?



我试图在Shell脚本中创建下面的模式设计,我已经编写了下面的代码相同,但我没有得到预期的结果。有人能帮帮忙吗?

期望输出值,在

*
**
***
****
*****
#! /bin/sh                                                                            
                
for ((i=1; i<=5; i++))                                                                
do                                                                                  
for ((j=1; j<=5; j++))                                                            
do                                                                             
if [ $j > 6-$i ]                                                         
then                                                                  
echo -n "* "                                                          
elif [ $j == 6-$i ]                                                      
then                                                                    
echo -n "* "                                                           
else                                                                     
echo -n "  "                                                          
fi                                                                      
done                                                                              
echo                                                                                
done   

电流输出,在

*****
*****
*****
*****
*****

您将需要使用另一个循环来打印前置空格。

for ((i=1;i<=5;i++));             # Loop to create 5 lines of text
do 
for((k=1;k<=(5-i);k++));        # Loop to padd prepending spaces
do 
printf "%s" " ";
done;
for ((j=1;j<=i;j++));           # Loop to create asterix
do 
printf "%s" "*";
done;
printf "n";                    # Print the carriage return
done

对代码进行最少的修改以使其正常工作;你需要做数字比较和数字加法,以使你的检查语句工作:

for ((i=1; i<=5; i++)) ; do 
for ((j=1; j<=5; j++)) ; do
if [ $j -ge $((6-$i)) ] ; then                                                                  
echo -n "* "
else
echo -n "  "
fi                                                                  
done                                                                              
echo                                                                                
done

新输出:

* 
* * 
* * * 
* * * * 
* * * * * 

不需要那么多的算术运算,你可以使用printf来添加padding:

n=5
line=''
char='*'
for ((i=1; i<=n; i++)); do
line+=$char
printf "%*sn" $n "$line"
done

如果你想让三角形向另一个方向倾斜:

printf "%-*sn" $n "$line"

相关内容

  • 没有找到相关文章