訓(xùn)練編寫一段代碼,打印輸出100之內(nèi)的明7暗7,同時要求每5個數(shù)字打印在一行。
此項訓(xùn)練主要是考察for循環(huán)的使用,及條件判斷表達(dá)式的設(shè)置和不同寫法的應(yīng)用。
常用的for循環(huán)有四種寫法(如打印1-100的整數(shù)):
????????for i in $(seq 100);do echo $i;done
????????for i in `seq 100`;do echo $i;done
????????for ((i=0;i<=100;i++));do echo $i;done
????????for i in {1..100};do echo $i;done
每種方法,都能達(dá)到期望的結(jié)果。
對于條件判斷式,也有四種常見寫法:
????????test 表達(dá)式
????????[ 表達(dá)式 ] # 表達(dá)式與[或]之間必須有空格
????????[[表達(dá)式 ]]
????????((表達(dá)式))
結(jié)合上述解釋,本案例代碼列出如下:
cat ?for_7.sh
#!/bin/bash
# 打印輸出100之內(nèi)的明7暗7
# 打印數(shù)字,每5個一行
cnt=0? # 設(shè)置計數(shù)變量
for ((i=1;i<=100;i++))? #這是一種C風(fēng)格for循環(huán)寫法
do
:<<!
???????? 下面判斷的三項條件,我們分別以不同的方式寫出
???????? $((i%7))這種寫法與`expr $i / 10`相同,這是bash中的變量運(yùn)算表達(dá)式寫法
???????? $[i%10] 這是對判斷表達(dá)式結(jié)果的引用
???????? `expr $i / 10`寫法中要注意每項之間要有空格
!
???????? if [[ $((i%7)) -eq 0 || $[i%10] -eq 7 || `expr $i / 10` -eq 7 ]]
???????? then
?????????????????? echo -ne "$i\t"
?????????????????? let cnt++
?????????????????? if [ $[cnt%5] -eq 0 ];then
??????????????????????????? echo
?????????????????? fi
???????? fi
done
把sh文件中代碼進(jìn)行部分改寫,如下。結(jié)果相同
count=0;for i in $(seq 100); do if [[ $((i%7)) -eq 0 || $[i%10] -eq 7 || `expr $i / 10` -eq 7 ]];then echo -ne "$i\t"; let count++; if ((count%5==0));then echo; fi; fi; done
文章來源:http://www.zghlxwxcb.cn/news/detail-731578.html
[[ ]] 中匹配字符串或通配符,不需要引號;其中可以使用邏輯運(yùn)算符||。文章來源地址http://www.zghlxwxcb.cn/news/detail-731578.html
到了這里,關(guān)于Linux centos7 bash編程訓(xùn)練的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!