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

相关推荐

  • 0808文本处理作业

                           1 、删除/etc/grub2.conf 文件中所有以空白开头的行行首的空白字符。 答:sed  ‘@^[[:space]]\+@@’  /etc/grub2/cf…

    Linux干货 2016-08-11
  • N26-第六周

    请详细总结vim编辑器的使用 vim 模式化的编辑器 vim的三种模式:1.编辑模式(命令模式)                          2.输入模式          …

    Linux干货 2017-03-13
  • bash代码注入的安全漏洞

           很多人或许对上半年发生的安全问题“心脏流血”(Heartbleed Bug)事件记忆颇深,这两天,又出现了另外一个“毁灭级”的漏洞——Bash软件安全漏洞。这个漏洞由法国GNU/Linux爱好者Stéphane Chazelas所发现。随后,美国电脑紧急应变中心(US-CERT)、红帽以及多家从事安全的公…

    Linux干货 2015-03-30
  • 选择判断专题脚本编程_第九周练习

    Q1:写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # declare -i y=0 declare -i n=0 for i in $(cut…

    Linux干货 2016-12-25
  • Linux进程及管理(1)

    Linux进程及管理(1) 内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能 Process: 运行中的程序的一个副本; 存在生命周期Linux内核存储进程信息的固定格式:task struct 多个任务的的task struct组件的链表:task list 进程创建: init 父子关系 进程:都由其父进程创建 fork(), cl…

    Linux干货 2015-05-28
  • Linux进程与作业1

    Linux进程与作业 操作系统的组成部分:硬件,kernel,lib, 系统调用–>调用kernel lib调用–> 库调用,kernel调用 运行用户代码–>用户模式–>用户空间; 运行kernel–>内核模式–>内核空间; 内核的功用:进程管理,文件系统,网络功能,内存管理,驱动程序,安全功能 C…

    Linux干货 2016-08-02