目錄
一、for循環語法
二、while循環語法
三、until循環語法
四、8道案例練習
五、知識點總結
1、循環語句for,while,until用法
2、if 條件判斷 (文件、整數、字符串、多重條件判斷)
3、四則運算
前言:網上關於數據類的shell案例我找到的很少,網上的shell案例更多是運維方向的。自己現在還是shell學習階段,以後會多整理數據開發、ETL開發
中如何運用shell腳本
,目前文章更多是shell中某一個語法。
循環語句:Bash Shell中主要提供了三種循環方式:for、while和until。
首先我們先看這三種循環的語法。
一、for循環語法
列表for循環:用於將一組命令執行已知的次數
語法一:
for variable in {list} #variable 變量
do
command #command 命令行
command
…
done
語法二:
for variable in a b c
do
command
command
done
# for var in 1 2 3 4 5;do echo $var;done
語法三:
類C風格的for循環
for(( expr1;expr2;expr3 ))
do
command
command
…
done
#expr1:定義變量並賦初值
#expr2:決定是否進行循環(條件)
#expr3:決定循環變量如何改變,決定循環什麼時候退出
舉例
# for ((i=1;i<=5;i++));do echo $i;done
# for ((i=1;i<=10;i+=2));do echo $i;done
# for ((i=2;i<=10;i+=2));do echo $i;done
二、while循環語法
特點:條件爲真就進入循環;條件爲假就退出循環
i=1
while expression #expression表達式,eg:[ 1 -eq 1 ] (( 1 >= 1 ))
#while首先進行條件測試,如果條件測試爲真,則進入循環,執行命令區域,否則不進入循環
do
command
command
done
舉例
i=1
while [ $i -le 5 ] #當變量i小於5時,執行下面的循環體中的命令
do
echo $i
let i++
done
三、until循環語法
特點:條件爲假就進入循環;條件爲真就退出循環
until expression #expression表達式,eg:[ 1 -eq 1 ] (( 1 >= 1 ))
do
command
command
...
done
舉例
i=1
until [ $i -gt 5 ] #gt大於,當變量i大於5不成立的時候,執行下面的循環體中的命令
do
echo $i
let i++
done
四、案例練習
練習題
1、用for循環/home/study/study_shell目錄下創建aaa1-aaa10,然後在aaa1-aaa10創建bbb1-bbb10的文件
2、使用for循環、while循環計算100以內的偶數和
3、使用for循環打印99乘法表
4、使用while循環打印99乘法表
5、使用for循環計算100以內的奇數和
6、使用while循環計算100以內的奇數和
7、使用類C風格的 for循環計算100以內的奇數和
8、判斷所輸整數是否爲質數
1、用for循環/home/study/study_shell目錄下創建aaa1-aaa10,然後在aaa1-aaa10創建bbb1-bbb10的文件
#!/bin/bash
#path:/home/study/study_shell
#1、用for循環在/home/study/study_shell目錄下創建aaa1-aaa10目錄
#2、然後在aa1-aaa10創建bbb1-bbb10的目錄(在aaa1目錄中創建bbb1-bbb10的文件,在aaa2目錄中創建bbb1-bbb10的文件)
for i in `seq 10`
do
mkdir /home/study/study_shell/aaa$i
cd /home/study/study_shell/aaa$i
for j in `seq 10`
do
touch bbb$j
done
done
說明:
(1)seq 用於產生從某個數到另外一個數之間的所有整數
2、使用for循環、while循環計算100以內的偶數和
2.1、for循環計算100以內的偶數和
#!/bin/bash
#使用for循環計算100以內的偶數和
sum=0
for i in {1..100}
do
if [ $[$i%2] -eq 0 ];then #eq等於,%取餘
sum=$[$sum+$i]
fi
done
echo "100以內的偶數和爲${sum}"
說明:
(1){1..100}
會生成一個空格分隔的數字序列字符串
(2)if [ $[$i%2] -eq 0 ]
,條件判斷之判斷整數,當變量除以2的餘數等於0成立時,執行下面的步驟
條件判斷語法
語法1: test 條件表達式
#test -e file 只要文件存在條件爲真
語法2: [ 條件表達式 ]
#[ $[id -u] -eq 0 ]
#[ $[$i%2] -eq 0 ]
語法3: [[ 條件表達式 ]] 支持正則 =~
語法4:類C風格的數值比較
#(($[$a%2]==0));echo $?
參考文檔:黑馬程序員課件___條件判斷 (文件、整數、字符串、多重條件判斷)
(3)[$i%2]、[$sum+$i]
,四則運算。
四則運算語法:
語法1: $(( ))
#echo $((1+1))或者a=$((1+1))
語法2:$[ ]
#echo $[10-5]或者a=$[10-5]
語法3:expr
#expr 10 / 5
語法4:let
#n=1;let n+=1 等價於 let n=n+1
2.2、while循環計算100以內的偶數和
#!/bin/bash
#使用while循環計算100以內的偶數和
i=1
sum=0
while [ $i -lt 101 ]
do
if [ $[$i%2] -eq 0 ];then
sum=$[$sum+$i]
fi
let i+=1
#let i+=1 等於let n=n+1
done
echo "100以內的偶數和爲${sum}"
3、使用for循環打印9*9乘法表
#!/bin/bash
#使用for循環打印9*9乘法表
for i in `seq 9`
do
for j in `seq $i`
do
echo -n "$j*$i=$[$j*$i] "
#echo -n 不換行輸出
done
echo
done
說明
(1)echo -n 不換行輸出
(2)單獨一個echo,作用是換行
4、使用while循環打印9*9乘法表
#!/bin/bash
#使用while循環打印9*9乘法表
i=1
while [ $i -le 9 ]
do
j=1
while [ $j -le $i ]
do
echo -n "$j*$i=$[$j*$i] "
let j++
done
let i++
echo
done
說明
(1)let j++等於let n=n+1
5、使用for循環計算100以內的奇數和
#!/bin/bash
#使用for循環計算100以內的奇數和
sum=0
for i in {1..100..2}
do
let sum=sum+i
done
echo "100以內的奇數和爲:${sum}"
說明:
(1) {1..100..2}
用於產生從1到100之間的所有整數,整數之間的間隔是2
(2)let sum=sum+i
四則運算
6、使用while循環計算100以內的奇數和
#!/bin/bash
#使用while循環計算100以內的奇數和
i=1
sum=0
while [ $i -le 100 ]
do
if [ $[$i%2] -eq 1 ];then
sum=$[$sum+$i]
fi
let i++
done
echo "100以內的奇數和爲:${sum}"
感想:
這個代碼看着就6行,挺簡單的,但寫的時候改了5個地方纔能正常運行。就像SQL一樣看着很簡單,但在實際業務過程中會遇見很多問題。還是要多多練習。
7、使用類C風格的 for循環計算100以內的奇數和
類C風格的for循環語法:
for(( expr1;expr2;expr3 ))
do
command
command
…
done
#expr1:定義變量並賦初值
#expr2:決定是否進行循環(條件)
#expr3:決定循環變量如何改變,決定循環什麼時候退出
舉例
# for ((i=1;i<=5;i++));do echo $i;done
# for ((i=1;i<=10;i+=2));do echo $i;done
# for ((i=2;i<=10;i+=2));do echo $i;done
練習
#!/bin/bash
#使用類C風格的for循環計算100以內的奇數和
sum=0
for ((i=1;i<=100;i+=2))
do
let sum=sum+i
done
echo "100以內的奇數和爲:${sum}"
8、判斷所輸整數是否爲質數
#!/bi /bash
#判斷所輸整數是否爲質數
#質數除了本身和1以外並沒有任何其他因子
#質數表:2 3 5 7 11 13 17 19 23 29
read -p "請輸入一個正整數:" number
if [ $number -eq 1 ];then
echo "${number}不是質數"
elif [ $number -eq 2 ];then
echo "${number}是質數"
else
for i in `seq 2 $[$number-1]`
do
if [ $[$number%$i] -eq 0 ];then
echo "${number}不是質數"
exit
fi
done
echo "${number}是質數"
fi
說明:
(1)if語法結構
語法一:if...else結構
if [ condition ];then
command1
else
command2
fi
語法二:if...elif...else結構
if [ condition1 ];then
command1 結束
elif [ condition2 ];then
command2 結束
else
command3
fi
五、知識點總結
1、循環語句for,while,until用法
文章位置:所有內容都涉及
2、 if 條件判斷 (文件、整數、字符串、多重條件判斷)
文章位置:四、案例練習___8、判斷所輸整數是否爲質數
文章位置:四、案例練習___2、使用for循環、while循環計算100以內的偶數和
文章位置:四、案例練習___6、使用while循環計算100以內的奇數和
參考文檔:黑馬程序員課件___條件判斷 (文件、整數、字符串、多重條件判斷)
3、四則運算
文章位置:四、案例練習___2、使用for循環、while循環計算100以內的偶數和
4、感想
shell語法真的很亂,比如條件判斷就有4中語法,並且數字和文件的條件判斷語法還不是一樣的.關於if條件判斷,for循環,以及四則運算在文章中都涉及了.以後在工作中如果遇見相應的問題在看這篇文章總結把