bash脚本循环语句用法练习

bash脚本循环语句用法练习

1、使用循环语句写一个脚本,实现打印出来国际象棋的棋盘

#方法1:使用until循环语句实现
[root@liang7 bin]# cat chess-until.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:Print the chess board

#Define the number of rows
r=1
until [ $r -gt 8 ] ;
do
    #Define the number of columns
    c=1
    until [ $c -gt 8 ] ;
    do
        if [ `echo $[(r+c)%2]` -eq 0 ] ;then
            echo -ne "\033[43m  \033[0m"
        else
            echo -ne "\033[41m  \033[0m"
        fi
            let c++
    done
    echo
    let r++
done
#方法2;使用while循环语句实现
[root@liang7 bin]# cat chess-while.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:Print the chess board

#Define the number of rows
r=1
while [ $r -le 8 ] ;
do
    #Define the number of columns
    c=1
    while [ $c -le 8 ] ;
    do
        if [ `echo $[(r+c)%2]` -eq 0 ] ;then
            echo -ne "\033[43m  \033[0m"
        else
            echo -ne "\033[41m  \033[0m"
        fi
            let c++
    done
    echo
    let r++
done
#方法3:使用for循环语句实现
[root@liang7 bin]# cat chess-for.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:Print the chess board

#Define the number of rows
for r in {1..8} ;
do
    #Define the number of columns
    for c in {1..8} ;
    do
        if [ `echo $[(r+c)%2]` -eq 0 ] ;then
            echo -ne "\033[43m  \033[0m"
        else
            echo -ne "\033[41m  \033[0m"
        fi
    done
echo
done

1GIF.gif

2、使用循环语句写一个脚本,实现用“*”打印出等腰三角形的形状

#方法1:
[root@liang7 bin]# cat sjx1.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:Print out an isosceles triangle

read -p "请输入想要的三角形层数:" num
until  echo $num|grep -q '^[0-9]\+$' ;
do
read -p "请重新输入三角形层数:" num
done
if [ $num -eq 0 -o $num -eq 1 ] ; then
echo "您输入的层数无法组成三角形,输入的层数应大于等于2"
else
    for line in `seq 1 $num`;
    do
        let n=$num-$line
        m=1
        while [ $n -gt 0 ] ;
        do
        echo -n " "
        let n--
        done 
        while [ `echo $[line*2-1]` -ge $m ];
        do
            echo -n "*"
            let m++
        done
    echo
    done
fi
方法2:
[root@liang7 bin]# cat sjx2.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:Print out an isosceles triangle

read -p "请输入想要的三角形层数:" num
until  echo $num|grep -q '^[0-9]\+$' ;
do
read -p "请重新输入三角形层数:" num
done
if [ $num -eq 0 -o $num -eq 1 ] ; then
echo "您输入的层数无法组成三角形,输入的层数应大于等于2"
else
    for line in `seq 1 $num` ;
    do
        for((n=(num-line);n>0;n--));
        do
            echo -n " "
        done
        for((m=1;(line*2-1)>=m;m++));
        do
            echo -n "*"
        done
        echo
    done
fi

2GIF.gif

原创文章,作者:苦涩咖啡,如若转载,请注明出处:http://www.178linux.com/37114

(0)
苦涩咖啡苦涩咖啡
上一篇 2016-08-24
下一篇 2016-08-24

相关推荐

  • Linux shell之bash特性大全详解(持续更新ing)

    一、shell是什么?     Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中…

    Linux干货 2016-03-09
  • 马哥Linux第二周学习笔记

    文件管理,用户管理,权限管理

    Linux干货 2017-12-23
  • M22 用户、组学习总结

    Linux系统的登录方式是通过账号和密码。每一个登录账号都有一个主组可能有附加组。Linux内的文件和目录都有所有者和属组,只有相应权限的账户可以对其进行操作,下面我对用户权限相关内容进行了总结。   1、  用户ID,每个用户具有相应的ID号码,主要分为两类:系统ID和用户ID,在Centos6中系统ID为1-499,用户ID >…

    2017-02-22
  • 常用linux命令小计(1)

    关于linux那些事儿—常用命令小结(1) 系统相关信息 Uname –m显示处理器的架构 Uname –r显示正在使用的内核版本 cat /proc/cpuinfo显示cpu的具体信息 cat /proc/version显示内核的版本 cat /proc/swaps显示哪些分区被使用 data显示系统日期 cal –y显示当年的日历 date 021920…

    Linux干货 2017-02-19
  • 马哥教育N22期第五周作业

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@localhost ~]# egrep "^root|fedora|user1" /etc/passwd root:x:0:0:root:/root:/bin/bash fedora:x:1002:1002::/…

    Linux干货 2016-09-15
  • Linux下inode理解及软、硬链接初探

    1、Inode是什么? 要理解inode,要从文件储存说起。 文件由元数据和数据构成。 文件储存在硬盘上,最小的存储单位叫做“扇区(Sector)”。每个扇区存储512字节。操作系统读取硬盘时,不会一个扇区一个扇区地读取,这样非常低效;而是一次性连续读取多个扇区,即一次性读取一个“块(block)”。“块”由多个扇区组成,常见的大小有1K、2K、4K等,其中…

    Linux干货 2016-07-29