Shell二重循环

本文介绍了如何利用Shell脚本中的echo命令及其选项-e和-n,结合二重循环来绘制正方形、矩形、不同类型的直角三角形、等腰三角形、等腰梯形和菱形。同时,还讲解了seq命令的用法,用于生成数字序列,辅助图形的绘制。通过示例脚本展示了如何实现九九乘法表的打印。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

二重循环打印正方形

[root@server2 ~]# vim zhengfangxing.sh

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

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

在这里插入图片描述

打印矩形

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

打印直角三角形

左下直角

[root@server2 ~]# vim zjsjx.sh

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

[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
     for ((k=10-$j;k>0;k--))
     do
     echo -n "*"
     done
echo
done

在这里插入图片描述

左上直角

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

右下直角

#!/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 ~]# vim 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 ~]# chmod +x dy.sh 
[root@server2 ~]# ./dy.sh 

在这里插入图片描述

打印等腰梯形

[root@server2 ~]# vi 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

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

打印菱形

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

脚本

[root@server2 ~]# vi 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

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

九九乘法表

[root@server2 ~]# vim 99.sh

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

[root@server2 ~]# chmod +x 99.sh 
[root@server2 ~]# ./99.sh 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值