shell腳本介紹&shell腳本結構和執行&date命令用法&shell腳本中的變量

20.1 shell腳本介紹

• shell是一種腳本語言  aming_linux  blog.lishiming.netlinux

• 可使用邏輯判斷、循環等語法nginx

• 能夠自定義函數shell

• shell是系統命令的集合vim

• shell腳本能夠實現自動化運維,能大大增長咱們的運維效率bash

20.2 shell腳本結構和執行

shell腳本結構

開頭

開頭須要加#!/bin/bash運維

[root@linux-5 ~]# mkdir shell
[root@linux-5 ~]# cd shell
[root@linux-5 shell]# vim lem01.sh
#!/bin/bash

寫shell腳本,第一行必須寫#! /bin/bash,固定格式,做用是指定腳本中命令所需的解釋器,腳本如果在當臺機器上去執行,能夠不加這一行也不要緊,由於它知道下面若干條的命令能在這臺機器上去執行,去解析,一般都是 /bin/bash 解釋器來執行的函數

/bin/bash也是一條命令, /bin/bash 和 /bin/sh 是同一個文件spa

[root@linux-5 shell]# ll /bin/bash
-rwxr-xr-x. 1 root root 960472 8月   3 2017 /bin/bash
[root@linux-5 shell]# ll /bin/sh
lrwxrwxrwx. 1 root root 4 3月   4 05:42 /bin/sh -> bash

lem01.sh文件內容就是被/bin/bash所解析的.net

若shell腳本中首行沒有/bin/bash ,可使用 /bin/bash lem01.sh去執行日誌

解釋說明

以#開頭的行做爲解釋說明,除了腳本首行的特殊性之外,如果在shell腳本中的第二行寫入#號開頭的行, 就表示解釋說明的做用

shell腳本執行

運行shell腳本有兩種方法

一種是sh lem01.sh運行shell腳本

另外一種方法

先 chmod a+x lem01.sh 給文件加一個執行權限

再 ./lem01.sh 去執行

[root@linux-5 shell]# chmod a+x lem01.sh
[root@linux-5 shell]# ./lem01.sh

這裏的 ./ 就至關於一個相對路徑,相對當前一個路徑

也可使用絕對路徑去執行腳本 /root/shell/lem01.sh ,其實就是找到這個文件去執行

查看腳本執行過程

執行時加入-x,-x就是顯示腳本執行的過程

[root@linux-5 shell]# sh -x lem01.sh
+ w
 11:36:51 up 33 min,  1 user,  load average: 0.01, 0.02, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.88.1     11:06    3.00s  0.04s  0.00s sh -x lem01.sh

每個加號,表示一個操做步驟

查看腳本是否有語法錯誤

執行時加入-n,-n就是檢測腳本執行是否有語法錯誤

[root@linux-5 shell]# sh -n lem01.sh
[root@linux-5 shell]#

如果沒有任何的輸出,那麼腳本則沒有錯誤

20.3 date命令用法

date命令,能夠顯示當前系統時間日期

[root@linux-5 shell]# date
2018年 07月 12日 星期四 11:58:05 CST

date命令在shell中的做用

date命令,在shell中用處很是大;對文件後綴增長一個時間,以便後期管理

常見的日期單位

[root@linux-5 shell]# date +%Y
2018	    //四位的年
[root@linux-5 shell]# date +%y
18		    //兩位的年
[root@linux-5 shell]# date +%m
07		    //月份
[root@linux-5 shell]# date +%h
7月		    //月份
[root@linux-5 shell]# date +%w
4		    //表示周幾
[root@linux-5 shell]# date +%W
28		    //今年的第幾周,今年的第28周
[root@linux-5 shell]# date +%d
12   	    //日期
[root@linux-5 shell]# date +%D
07/12/18	//直接標記年月日,不過格式比較特殊
[root@linux-5 shell]# date +%Y%m%d
20180711	//年月日
[root@linux-5 shell]# date +%F
2018-07-11	//年月日,這種帶橫槓的

常見的時間單位

[root@linux-5 shell]# date +%H
12			//小時
[root@linux-5 shell]# date +%M
32		    //分鐘
[root@linux-5 shell]# date +%S
53			//秒
[root@linux-5 shell]# date +%T
13:41:37    //總體時間
[root@linux-5 shell]# date +%s
1531322044	//這是一個時間戳,距離1970年1月1日0點0分總共過去多少秒

顯示日曆

[root@linux-5 shell]# 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 31

標記指定的日期

在作nginx日誌切割的時候,到了凌晨切割日誌,到了零點零分切割的日誌是前一天的日誌。因此把日誌加一個時間標記的話,應標記爲昨天的日期

減號- 表示以前的日期,加號 + 表示從今日後的日期

date -d "-1 day" +%F      ##顯示前一天的日期

date -d "-1 month" +%F    ##顯示上個月的日期

date -d "-1 years" +%F    ##顯示上一年的日期

date -d "+1 hour" +%T     ##顯示下一小時

時間戳換算

[root@linux-5 shell]# date +%s -d "2018-07-12 13:48:11"
1531374491
[root@linux-5 shell]# date -d @1531374491
2018年 07月 12日 星期四 13:48:11 CST

20.4 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 第二個 ....       $#表示參數個數

• 數學運算a=1;b=2; c=$(($a+$b))或者$[$a+$b]

相關文章
相關標籤/搜索