1. 程式人生 > >shell實戰訓練營Day6

shell實戰訓練營Day6

shell程式設計
shell是一種程式語言,可以使用邏輯判斷,迴圈等語法。
可以自定義函式。
shell是系統命令的集合。
shell指令碼意識實現自動化運維,提高工作效率。

shell指令碼的結構和執行
1.開頭要使用 #!/bin/bash ——檔案頭,已什麼直譯器執行
2.#開頭為解釋說明
3.指令碼以.sh結尾,用於區分這是一個shell指令碼。
有兩種指令碼執行方式
1 bash file.sh
2 chmod +x file.sh; ./file.sh
檢視指令碼執行過程 bash -x file.sh
檢視指令碼語法是否有誤 bash -n file.sh 若無返回,這shell指令碼無語法錯誤。

date 命令用法
date +%Y%m%d 顯示年月日 20181224
date +%y%m%d 顯示年月日 181224
date +%Y-%m-%d 顯示年月日 2018-12-24
date +%F 顯示年月日 2018-12-24 (效果同上)
date +%H:%M:%S 顯示時分秒 18:34:01
date +%s 顯示時間戳 1545647782 (距1970-01-01過了多少秒)
date +%w (小w) 顯示星期幾 顯示1即表示星期一
date +%W(大W) 顯示今年的第幾周 顯示52即表示今年的第52周
date -d "+1 day" 表示一天後
date -d "-1 day" 表示一天前
date -d "-1 day" +%F 顯示一天前以前,已年月日的格式
date -d "-1 min" +%T 顯示一分鐘以前,已時分秒的格式
date +%s -d "2018-12-24 18:45:59" 將時間換算為時間戳 1545648359
date

[email protected] 將時間戳換算為具體時間 2018年 12月 24日 星期一 18:45:59 CST

shell指令碼中的變數
1.當指令碼中的字串使用頻率較高或字串較長時,使用變數代替。
2.使用條件語句時,用變數代替 if[ $a -gt 1]; then....;fi
3.引用某個命令的結果時,用變數代替。 n=wc -l file.txt
4.寫和使用者互動的指令碼時,變數也是必不可少的。read - p "Input a number:"n; echo $如果改寫這個n,可以直接使用$REPALY
5.內建變數 $0,$1,$2,$# ,$0表示指令碼本身,$1表示第一個引數,$#表示引數的個數
6.數學運算 a=1;b=2;c=$(($a+$b)) 或者 $[$a+$b]

shell中的邏輯判斷 if
格式1 : if 條件;then語句;fi

#! /bin/bash
a=5
if [ $a -gt 3 ]
then
echo ok
fi

if [ $a -gt 3 ];then echo ok;fi

格式2: if 條件;then 語句;else 語句;fi;

#! /bin/bash
a=2
if [ $a -gt 3 ]
then
echo ok
else
echo not ok

fi

if [ $a -lt 3 ];then echo ok;else ehco not ok;fi

格式3:if條件;then語句;elif條件;then語句;else語句;fi

#! /bin/bash
a=5
if [ $a -gt 1 ]
then
echo ">1"
elif [ $a -lt 6 ]
then
echo "<6 && >1"
else
echo not ok
fi

if [ $a -gt 1 ];then echo ">1";elif [ $a<6 && $a>1 ];then echo "<6 && >1";else echo no ok; fi

-gt 大於 -lt 小於 -eq 等於
-ge 大於等於 -le 小於等於 -ne 不等於

支援 && 邏輯與;支援|| 邏輯或
if [ $a -gt 3 ] &&[ $a -lt 8 ] ;then echo ok;fi
if [ $a -gt 3 ] ||[ $a -lt 8 ] ;then echo ok;fi