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 10:25
下一篇 2016-08-24 10:25

相关推荐

  • N25_第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@test ~]# who root     tty1         2016-12-03&nb…

    Linux干货 2016-12-16
  • N25-Bazinga-第三周作业

    N25-Bazinga-第三周作业 1.列出当前系统上登录的所有用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# w | cut -d' ' -f1 | uniq -c |&nbs…

    Linux干货 2016-12-21
  • 阿里巴巴开源项目nginx_concat_module企业部署实例

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1580194        公司的前端开发工程师今天找我,让我给他搞下淘宝的一个开源项目 nginx_concat_m…

    Linux干货 2016-08-15
  • 20171121 grep 正则表达式

    diff与patch ,grep 正则表达式

    2017-11-21
  • N25第1周作业

    1.计算机的组成及功能 地址:博客园http://www.cnblogs.com/qingyangzi/p/6133274.html 2.linux主要的发行版及其区别和联系 地址:博客园http://www.cnblogs.com/qingyangzi/p/6135801.html 3.linux哲学思想 地址:博客园http://www.cnblogs.…

    Linux干货 2016-12-05
  • N25-第二周作业

    1、linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 linux上处理目录的常用命令:     ls :列出目录     cd :切换目录     pwd:显示当前工作路径    &nbs…

    Linux干货 2016-12-13