shell腳本介紹、結構和執行、date命令用法、shell腳本中的變量
-
shell 是一種腳本語言
- shell有自己的語法,可以使用邏輯判斷、循環等語法
-
可以自定義函數,目的就是為了減少重復的代碼
-
shell 是系統命令的集合
- shell 腳本可以實現自動化運維,能大大增加我們的運維效率
shell 腳本結構和執行
結構
-
腳本第一行必須為 #!/bin/bash
-
腳本內容中以#開頭的行為作為解釋說明
-
編寫腳本時備註:作者、時間、功能等信息,方便之後查看
- 腳本名用“.sh”結尾,用於區分這是一個shell腳本
執行方法
1、給腳本添加執行權限“chmod a+x test.sh”,然後直接執行過程
2、bash test.sh ; sh test.sh
-
sh 參數
- -x:sh -x test.sh 查看腳本執行過程
- -n:sh -n test.sh 查看腳本是否存在語法錯誤
創建一個shell 腳本:
[root@localhost shell]# vim 01.sh
#! /bin/bash //固定格式
echo "123"
w
ls給腳本加上執行權限:
[root@localhost shell]# chmod a+x 01.sh執行腳本
[root@localhost shell]# ./01.sh
abc
22:46:45 up 2:33, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
01.sh -
在當前終端裏,把01.sh中的#! /bin/bash 去掉後在執行腳本,會看到得到的結果相同,不會出現任何的問題,這就說明這臺機器是能識別裏面一條一條的命令的,去運行這裏面的命令;但若是換一臺機器,就不一定能執行了
- 在第一行,文件頭指定 #!/bin/bash ,接下來要運行的命令是通過哪一個解釋器來操作的,通常都是 /bin/bash 解釋器來執行的
date 命令用法
-
date命令用於顯示或設置系統時間與日期
-
語法:date 選項 參數
-
選項
- -d:顯示字符串指定的日期與時間(字符串前後必須加上雙引號)
- -s:根據字符串來設置時間與日期(字符串前後必須加上雙引號)
-
參數
顯示當前時間:
[root@localhost ~]# date
2018年 02月 07日 星期三 09:56:28 CST查看系統日歷:
[root@localhost ~]# cal
二月 2018
日 一 二 三 四 五 六
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28// cal -y可以查看一年的日歷
"+時間日期格式":指定日期和時間顯示的格式
date +%Y(%y):以四位(兩位)數格式顯示年份
[root@localhost ~]# date +%Y
2018
[root@localhost ~]# date +%y
18date "+%Y-%m-%d %H:%M:%S %w"
表示:年、月、日、時、分、秒、星期
[root@localhost ~]# date "+%Y-%m-%d %H:%M:%S %w"
2018-02-07 10:02:43 3
// 以上參數組合時,中間有特殊符號的話需要加雙引號date +%F:顯示完整的年月日
[root@localhost ~]# date +%F
2018-02-07date +%W:顯示當前時間是一年的第幾周
[root@localhost ~]# date +%W
06date +%T:顯示當前時間是幾點
[root@localhost ~]# date +%T
10:05:50date +%s:時間戳
// 顯示從1970年1月1日00:00:00到目前經歷的秒數
[root@localhost ~]# date +%s
1517969292時間戳換算:
[root@localhost ~]# date +%s -d "20180207 10:10:00"
1517969400
[root@localhost ~]# date -d @1517969400
2018年 02月 07日 星期三 10:10:00 CST
打印指定日期&時間
-
有時候需要使用N天(小時、分鐘、秒)前的日期或時間
兩天以前:
date -d "-2 day"
[root@localhost ~]# date
2018年 02月 07日 星期三 10:14:10 CST
[root@localhost ~]# date -d "-2 day"
2018年 02月 05日 星期一 10:14:13 CST兩天以後:
date -d "+2 day"
[root@localhost ~]# date
2018年 02月 07日 星期三 10:14:58 CST
[root@localhost ~]# date -d "+2 day"
2018年 02月 09日 星期五 10:15:02 CST一年兩個月一天以前:
date -d "-1 year -2 month -1 day"
[root@localhost ~]# date
2018年 02月 07日 星期三 10:16:32 CST
[root@localhost ~]# date -d "-1 year -2 month -1 day"
2016年 12月 06日 星期二 10:16:34 CST
時間設置
-
手動設置時間:date -s "年-月-日 時:分:秒"
[root@localhost ~]# date -s "2017-01-01 12:00:00"
2017年 01月 01日 星期日 12:00:00 CST
[root@localhost ~]# date
2017年 01月 01日 星期日 12:00:02 CST -
同步網絡時間:ntpdate命令
[root@localhost ~]# yum install -y ntp
// 安裝ntpdate命令[root@localhost ~]# ntpdate ntp1.aliyun.com
7 Feb 10:24:16 ntpdate[2681]: step time server 182.92.12.11 offset 34726773.904725 sec
[root@localhost ~]# date
2018年 02月 07日 星期三 10:24:24 CST
// ntpdate 後面跟ntp時間服務器地址
shell 腳本中的變量
-
當腳本中使用某個字符串較頻繁,並且字符串長度很長,此時就應該使用變量來代替該字符串。
-
使用條件語句時,常使用變量 if[$a -gt 1];then...;fi
-
引用某個命令的結果時,用變量替代 n=‘wc -l 1.txt‘
-
寫和用戶交互的腳本時,變量也是必不可少的 read -p "input a number:"n; echo $n 如果沒寫這個n,可以直接使用¥REPLY
-
內置變量$0,$1,$2... $0表示腳本本身,$1第一個參數,$2第二個參數 $n表示第n個參數
- 數學運算 a=1;b=2;c=$(($a+$b))或者$[$a+$b]
shell腳本介紹、結構和執行、date命令用法、shell腳本中的變量