博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本输出菱形与等边三角形
阅读量:5989 次
发布时间:2019-06-20

本文共 1653 字,大约阅读时间需要 5 分钟。

【前言】

练习shell,提高逻辑能力。

【脚本】

三角形与菱形均通过几个for循环实现,当然也可以用while。

下面是脚本内容:

[三角形]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
read 
-p 
"please input the longs:" 
long
for
((i=1;i<=$long;i++))
do
    
for
((j=$long;j>i;j--)) 
#控制空格输出
    
do
        
echo 
-n 
" "
    
done
    
for 
in 
`
seq 
1 $i`  
#输出所在行数相同的数字个数,如在第三行,就输出3个3
    
do
        
echo 
-n 
"$i"     
    
done
    
#for((n=1;n<i;n++))
    
for 
in 
`
seq 
2 $i`  
#输出所在行数减一的数字个数,如在第三行,就输出2个三
    
do                   
##这连个for循环可以整合到一块,实现每行输出(2*所在行数-1)个数字 
        
echo 
-n 
"$i"
    
done
    
echo 
""
done

执行后的效果图:

若将上述脚本内层的两个for循环内"echo -n "$i""的$i换为*后,再次执行脚本效果如下:

[菱形]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
read 
-p 
"please input the longs:" 
long
for
((i=1;i<=$long;i++))              
#图形上半部分
do
    
for
((j=$long;j>i;j--))
    
do
        
echo 
-n 
" "
    
done
    
for 
in 
`
seq 
1 $i`
    
do
        
echo 
-n 
"*"
    
done
    
#for((n=1;n<i;n++))
    
for 
in 
`
seq 
2 $i`
    
do
        
echo 
-n 
"*"
    
done
    
echo 
""
done
 
for
((i=2;i<=$long;i++))    
#图形下半部分
do
    
for 
((j=1;j<i;j++))
    
do
        
echo 
-n 
" "
    
done
 
    
let 
k=$long+1-$i    
 
    
for 
in 
`
seq 
1 $k`
    
do
        
echo 
-n 
"*"
    
done
    
for 
((n=1;n<k;n++))
    
#for n in `seq 2 $k`
    
do
        
echo 
-n 
"*"
    
done
    
echo 
""
done

改进后:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
read 
-p 
"please input the longs:" 
long
for
((i=1;i<=$long;i++))       
#控制行数
do
    
for
((j=$long;j>i;j--))    
#控制空格输出
    
do
        
echo 
-n 
" "
    
done
     
    
let 
"g=2*i-1"
 
    
for 
in 
`
seq 
1 $g`       
#控制*数量
    
do
        
echo 
-n 
"*"
    
done
 
    
echo 
""
done
 
for
((i=2;i<=$long;i++))       
#控制行数
do
    
for 
((j=1;j<i;j++))       
#控制空格输出
    
do
        
echo 
-n 
" "
    
done
 
    
let 
"k=2*(long-i)+1"
 
    
for 
in 
`
seq 
1 $k`       
#控制*数量
    
do
        
echo 
-n 
"*"
    
done
 
    
echo 
""
done

执行后的效果图:

本文转自 xoyabc 51CTO博客,原文链接:http://blog.51cto.com/xoyabc/1727758,如需转载请自行联系原作者

你可能感兴趣的文章
linux tomcat 80 端口不能访问
查看>>
sprig - classPathMapperScanner
查看>>
RandomAccessFile写文件
查看>>
伪静态的实现方法:IIS环境下配置Rewri...
查看>>
js函数收藏
查看>>
php扩展编译zlib Cannot find config.m4.
查看>>
Common-lang包常用类 方法
查看>>
老肖有话说:如期而至的Swarm新工具Crane开源解读
查看>>
图像处理入门——滤波
查看>>
应用一直报 DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=4.17.29
查看>>
UICollectionView 使用 介绍
查看>>
详细解析关于域控制器的安全保障
查看>>
MHA 安装配置
查看>>
Oracle数据库编程
查看>>
Spring mvc ,spring ,ibatis 学习记录(1)
查看>>
记一次内网渗透检测
查看>>
开发过程中得错误
查看>>
我的友情链接
查看>>
ASA防火墙静态PAT端口范围测试
查看>>
我的友情链接
查看>>