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.www58058.com/37114

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

相關推薦

  • Linux學習總結02—Linux的操作系統發展史(原創)

       我們都知道,在美國賓夕法尼亞大學,有那么一種計算機,叫ENIAC,這種機器耗電量是非常大,而且主機也是龐大,它誕生于1946年的2月14日的情人節,確實有紀念意義,就算是約炮也是拿著智能手機先搖一搖,好看就勾搭,不好看的就拉黑,這臺計算機可并不是造福人類的,只是計算數據,我想,當時的情況是這樣,在這臺計算機沒有出世之前,那幫工程師們…

    Linux干貨 2016-10-29
  • N25 – week 3 blog

    本周的blog開始使用了代碼語言格式,我原本以為自然的才是最好的,orginal的才是最美的,但是我錯了。。。我發現同學們都在各種markdown,各種排版。我說過我早已過了care這些的年紀,但是我不能脫離群體單獨存在,所以我底下了傲嬌的頭。 本周開始blog標題改為英文,逼格滿滿,麥滿分~ 下面開始第$wk_num周的作業 [root@dhcp-10-1…

    Linux干貨 2016-12-19
  • gawk基礎

     一、gawk 是什么 在了解gawk之前,先了解一下文本三工具      文本過濾工具:grep|egrep|fgrep   其中fgrep不支持正則表達式 1.行編輯器:sed      sed 有兩種空間   模式空間    保持空間 2. 文…

    Linux干貨 2016-06-24
  • Nginx七層反代服務器 (Blog 20)

    http反代、fastcgi反代

    Linux干貨 2017-12-20
  • LNMP安裝過程中出現的問題及解決方法

    一、背景介紹    操作系統版本:centos6.8    nginx版本:nginx-1.10.2            mysql版本:mysql5.7.16    php版本:php5.6.28   由于mysql和php的…

    Linux干貨 2016-11-23
  • 馬哥教育網絡班21期+第7周課程練習

    馬哥教育網絡班21期+第7周課程練習 創建一個10G分區,并格式為ext4文件系統;    a.要求block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl;    b.掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不能更新文件的訪問時間戳; #&…

    Linux干貨 2016-08-22
欧美性久久久久