Shell脚本二重循环打印

一 打印正方形的流程

1.1 初始命令结果(一列5个*)

[root@server2 ~]# vi xinghao.sh
[root@server2 ~]# chmod +x xinghao.sh 
[root@server2 ~]# vi xinghao.sh
[root@server2 ~]# ./xinghao.sh 

#!/bin/bash
# 打印图片
for ((j=1;j<=5;j++))
do
     echo "*"
done

在这里插入图片描述

1.2 修改为不换行输出 (变成一行5个*)

#!/bin/bash
# 打印图片
for ((j=1;j<=5;j++))
do
     echo -n "*"     不换行输出
done

在这里插入图片描述

1.3 增加外层循环条件(变成一行15个*)

[root@server2~]vi xinghao.sh
[root@server2 ~]# ./xinghao.sh 

#!/bin/bash
# 打印图片
for ((i=1;i<=5;i++))
do
   for ((j=1;j<=5;j++))
   do
     echo -n "*"
   done
done

在这里插入图片描述

1.4 增加换行(改变成5行*)

#!/bin/bash
# 打印图片
for ((i=1;i<=5;i++))
do
   for ((j=1;j<=5;j++))
   do
     echo -n "*"
   done
   echo                  增加换行
done

在这里插入图片描述

1.5 打印正方形 (在内循环中加入间隔空行)

#!/bin/bash
# 打印正方形
for ((i=1;i<=5;i++))
do
   for ((j=1;j<=5;j++))
   do
     echo -n "* "
   done
   echo
done

在这里插入图片描述

二 打印矩形

两种方式

2.1 第一种:设置长宽不同

[root@server2 ~]# vi cfx.sh
[root@server2 ~]# chmod +x cfx.sh 
[root@server2 ~]# ./cfx.sh



#!/bin/bash
# 打印长方形
for ((i=1;i<=6;i++))
do
  for ((j=1;j<=5;j++))
  do
     echo -n "* "
  done
  echo
done

在这里插入图片描述

2.2 第二种:设置横向没有间隔

#!/bin/bash
# 打印长方形
for ((i=1;i<=5;i++))
do 
  for ((j=1;j<=5;j++))
  do
     echo -n "*"
  done
  echo
done

在这里插入图片描述

三 ECHO 命令常用选项

echo -n: 不换行输出
 -e:支持反斜线控制的字符转换
转义:
 \a  发出警告声
 \b  删除前一个字符
 \c  最后不加上换行符号
 \f  换行但光标仍旧停留在原来的位置
 \n  换行且光标移至行首
 \r  光标移至行首,但不换行
 \t  插入tab
 \v  与\f 相同
 \\  插入\字符
 \nnn  插入nnn(八进制)所代表的ASCII字符
[root@server2 ~]# echo -e "abc\acd"
abccd
[root@server2 ~]# echo -e "abc\bcd"
abcd
[root@server2 ~]# echo -e "abc\ccd"
abc[root@server2 ~]# 
[root@server2 ~]# echo -e "abc\fcd"
abc
   cd
[root@server2 ~]# echo -e "abc\ncd"
abc
cd
[root@server2 ~]# echo -e "abc\rcd"
cdc
[root@server2 ~]# echo -e "abc\tcd"
abc	cd
[root@server2 ~]# echo -e "abc\vcd"
abc
   cd
[root@server2 ~]# echo -e "abc\\cd"
abc[root@server2 ~]# 
[root@server2 ~]# echo -e "abc\044cd"
abc$cd

在这里插入图片描述

\t 插入tab

[root@server2 ~]# vi cfx.sh
[root@server2 ~]# ./cfx.sh

#!/bin/bash
# 打印长方形
for ((i=1;i<=5;i++))
do
  for ((j=1;j<=5;j++))
  do
     echo -en "*\t"
  done
  echo
done

在这里插入图片描述

四 打印直角三角形

4.1 左下

[root@server2 ~]# vi sjx.sh
[root@server2 ~]# chmod +x sjx.sh 
[root@server2 ~]# ./sjx.sh


#!/bin/bash
# 打印直角三角形
for ((i=1;i<=9;i++))    定值行数
do
    for ((j=1;j<=$i;j++))  变量
    do
        echo -n "*"
    done
    echo
done

在这里插入图片描述

4.2 右上

[root@server2 ~]# vi sjx1.sh
[root@server2 ~]# ./sjx1.sh 

#!/bin/bash
# 打印直角三角形
for ((i=1;i<=9;i++))
do
  for ((j=1;j<$i;j++))
  do
     echo -n " "
  done
     for ((k=10-$j;k>0;k--))
     do
     echo -n "*"
     done
echo
done

在这里插入图片描述

4.3 左上

[root@server2 ~]# vi sjx2.sh
[root@server2 ~]# chmod +x sjx2.sh 
[root@server2 ~]# ./sjx2.sh 

在这里插入图片描述

#!/bin/bash
# 打印直角三角形
for ((i=1;i<=9;i++))
do
    for ((j=1;j<=10-$i;j++))
    do
        echo -n "*"
    done
echo
done

4.4 右下

[root@server2 ~]# vi sjx3.sh
[root@server2 ~]# chmod +x sjx3.sh 
[root@server2 ~]# ./sjx3.sh 

在这里插入图片描述

#!/bin/bash
# 打印直角三角形
for ((i=1;i<=9;i++))
do
   for ((j=9;j>=$i;j--))
   do
   echo -n " "
   done
   for ((k=1;k<=$i;k++))
   do
   echo -n "*"
   done
echo
done

在这里插入图片描述

五 打印等腰三角形

[root@server2 ~]# vi dy.sh
[root@server2 ~]# chmod +x dy.sh 
[root@server2 ~]# ./dy.sh 
#!/bin/bash
# 打印等腰三角形
for ((i=1;i<10;i++))
do
    for ((n=10;n>=i;n--))
    do
       echo -n " "
    done
       for ((m=1;m<=i;m++))
       do
          echo -n "* "
       done
    echo
done

在这里插入图片描述

六 打印等腰梯形

[root@server2 ~]# vi dytx.sh
[root@server2 ~]# chmod +x dytx.sh 
[root@server2 ~]# ./dytx.sh 

#!/bin/bash
# 打印等腰梯形
for ((i=1;i<10;i++))
do
    for ((n=10;n>=i;n--))
    do
       echo -n " "
    done
       for ((m=1;m<=i;m++))
       do
          echo -n "**"
       done
    echo
done

在这里插入图片描述

七 打印菱形

7.1 seq命令解析

seq 1000     起始默认是1,间隔默认也是1
seq  2 1000   间隔默认是1
seq  1  3 10    从1到10,间隔为3,结果是:1 4 7 10
seq  1  10    从1开始,到10结束,间隔为1,结果是:1 2 3 ..... 10

7.2 流程

[root@server2 ~]# vi lx.sh
[root@server2 ~]# chmod =x lx.sh 
[root@server2 ~]# ./lx.sh 


菱形上半部分命令
#!/bin/bash
# 打印菱形
read -p "请输入菱形长度" len
for i in `seq 1 $len`
do
     for ((j=$len-1;j>=$i;j--))
     do
          echo -n " "
     done
     for ((m=1;m<=$i;m++))
     do
          echo -n "* "
     done
     echo
done
菱形下半部分命令
for i in `seq 1 $len`
do
    for ((j=1;j<=$i;j++))
    do
        echo -n " "
    done
    for ((n=$len-1;n>=$i;n--))
    do
        echo -n "* "
    done
    echo
done

在这里插入图片描述

在这里插入图片描述

八 九九乘法表

8.1 递减式

[root@server2 ~]# vi ninel.sh
[root@server2 ~]# chmod +x ninel.sh 
[root@server2 ~]# ./ninel.sh 

#!/bin/bash
# 9*9乘法表
for ((i=1;i<=9;i++))
do
    for ((j=1;j<=i;j++))
    do
      echo -ne "$i*$j=$((i*j)) \t"
    done
    echo
done

在这里插入图片描述

8.2 横向式

[root@server2 ~]# vi ninel.sh
[root@server2 ~]# chmod +x ninel.sh 
[root@server2 ~]# ./ninel.sh 

#!/bin/bash
# 9*9乘法表
for ((i=1;i<=9;i++))
do
    for ((j=1;j<=9;j++))
    do
      echo -ne "$i*$j=$((i*j)) \t"
    done
    echo
done

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值