2018-4-17 16周5次課 shell腳本 date、if
20.1 shell腳本介紹
·shell是一種腳本語言
·可以使用邏輯判斷、循環等語法
·可以自定義函數
·shell是系統命令的集合
·shell腳本可以實現自動化運維,能大大增加我們的運維效率
·開頭需要加 #!/bin/bash,在本機上可以運行,換臺機器就不一定能執行。在行首文件頭處指定接下來要運行的命令是通過哪一個解釋器進行操作的。
·以#開頭的行作為解釋說明,腳本的名字以.sh結尾,用於區分這是一個shell腳本
·執行方法有兩種:1,bash 或 sh sh文件 ;2,給文件加執行權限,然後 ./文件
1,bash 1.sh /bin/bash 實際上就是 /bin/sh
[root@localhost shell]# ll /bin/bash -rwxr-xr-x. 1 root root 960472 8月 3 2017 /bin/bash [root@localhost shell]# ll /bin/sh lrwxrwxrwx. 1 root root 4 12月 28 05:37 /bin/sh -> bash
2,有執行權限的話,chmod +x 1.sh; 可以直接 ./1.sh
3,其實直接輸入文件的絕對路徑也可以執行
[root@localhost shell]# /root/shell/01.sh 123 22:22:27 up 2:21, 1 user, load average: 0.02, 0.02, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.65.1 20:08 3.00s 0.06s 0.00s /bin/bash /root/shell/01.sh 總用量 4 -rwxr-xr-x 1 root root 32 4月 16 22:22 01.sh
·查看腳本執行過程:bash -x 1.sh / sh -x 1.sh
[root@localhost shell]# sh -x 01.sh + echo 123 123 + w 22:23:55 up 2:23, 1 user, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.65.1 20:08 3.00s 0.07s 0.00s sh -x 01.sh + ls -l 總用量 4 -rwxr-xr-x 1 root root 32 4月 16 22:22 01.sh
·查看腳本是否語法錯誤:bash -n 1.sh
故意寫錯腳本(隨機的字符是不報錯的)
[root@localhost shell]# sh -n 01.sh 01.sh:行10: 語法錯誤: 未預期的文件結尾
[root@localhost ~]# date 2018年 04月 17日 星期二 20:15:04 CST
·date +%Y-%m-%d, date +%y-%m-%d 年月日
[root@localhost ~]# date +%Y-%m-%d 2018-04-17 [root@localhost ~]# date +%y-%m-%d 18-04-17 [root@localhost ~]# date +%d ## d 日期 17 [root@localhost ~]# date +%D ## 美國格式年月日 04/17/18 [root@localhost ~]# date +%M ## M 分鐘 06 [root@localhost ~]# date +%m ## m 月份 04 [root@localhost ~]# date +%F ## 日期 2018-04-17
·date +%H:%M:%S = date +%T 時間
[root@localhost ~]# date +%H:%M:%S 21:29:15 [root@localhost ~]# date +%T 21:29:35 [root@localhost ~]# date +%H ##小時 21 [root@localhost ~]# date +%h ##月份(帶格式,設置中文就是 4月,英文就是 Aprl) 4月 [root@localhost ~]# date +%M ##分鐘 31 [root@localhost ~]# date +%m ##月份 04 [root@localhost ~]# date +%S ##秒 44 [root@localhost ~]# date +%s ##世時間戳 1523971907
·date +%s 時間戳
距離1970-01-01-00-00-00 過去多少秒
·date +%w, date +%W 星期
[root@localhost ~]# date +%w## 星期幾 2 [root@localhost ~]# date +%W## 今年的第幾周 16
·date -d @1504620492
[root@localhost ~]# date -d @1504620492##知道時間戳查日期 2017年 09月 05日 星期二 22:08:12 CST [root@localhost ~]# date +%s -d "2018-4-17 21:52:30"##知道日期查時間戳 1523973150
·date -d "+1day" 一天後
[root@localhost ~]# date -d "+1day" 2018年 04月 18日 星期三 21:46:48 CST [root@localhost ~]# date -d "+1day" +%F 2018-04-18
·date -d "-1 day" 一天前
·date -d "-1 month" 一月前 ##年year
[root@localhost ~]# date -d "-1 month" +%F 2018-03-17
·date -d "-1 min" 一分鐘前 ##小時hour,秒second
[root@localhost ~]# date -d "-1 min" +%T 21:47:09
[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 29 30
·當腳本中使用某個字符串較頻繁並且字符串長度很長時就應該使用變量代替
·使用條件語句時,常使用變量 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 第二個 .... $#表示參數個數
·數學運算a=1;b=2; c=$(($a+$b))或者$[$a+$b]
2018-4-17 16周5次課 shell腳本 date、if