[toc]shell
Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋樑。Shell 既是一種命令語言,又是一種程序設計語言。
shell是一種腳本語言;
可使用邏輯判斷、循環等語法;
可自定義函數;
shell是系統命令的集合;
shell腳本能夠實現自動化運維,能大大增長咱們的運維效率;編程
說明了shell 腳本在工做的重要性,shell腳本就是一些命令的集合,是自動化運維的重要部分bash
下面跟着步驟來一步步學習如何寫shell腳本運維
[root@localhost ~]# mkdir shell [root@localhost ~]# cd shell/ [root@localhost shell]# ls [root@localhost shell]# vi 01.sh
shell腳本一般都是.sh爲後綴名,但不是說不加.sh的腳本就不能執行,只是你們的一個習慣而已,因此若是發新了以.sh爲後綴的文件,那麼它可能就是一個shell腳本.ide
本例中,腳本文件01.sh,進入編輯狀態後,第一行要以#!/bin/bash開頭,表示該文件使用的是bash語法.而/bin/bash是Bash的解釋器命令路徑.函數
[root@localhost shell]# sh 01.sh 123 22:43:14 up 25 min, 1 user, load average: 0.00, 0.01, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.72.1 22:26 2.00s 0.08s 0.00s w 01.sh
把#!/bin/bash這一行刪除,運行命令後也能執行但這樣不符合規範.學習
使用該方法運行shell腳本的前提是腳本自己有執行權限,須要給腳本加x權限測試
[root@localhost shell]# chmod +x 01.sh [root@localhost shell]# ./01.sh 123 23:18:34 up 1:01, 1 user, load average: 0.00, 0.01, 0.03 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.72.1 22:26 2.00s 0.11s 0.01s w 01.sh
[root@localhost shell]# bash 01.sh 123 23:37:15 up 1:19, 1 user, load average: 0.00, 0.01, 0.03 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.72.1 22:26 3.00s 0.20s 0.01s w 01.sh
這裏是否能夠理解有三種方法均可以執行shell腳本,可是本機驗證成功,不表明其餘機器虛擬機是否成功,後續測試設計
[root@localhost shell]# vi /etc/init.d/network #! /bin/bash # # network Bring up/down networking # # chkconfig: 2345 10 90 # description: Activates/Deactivates all network interfaces configured to \ # start at boot time. #
[root@localhost shell]# sh -x 01.sh + echo 123 123 + w 23:40:21 up 1:22, 1 user, load average: 0.00, 0.01, 0.03 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.72.1 22:26 5.00s 0.22s 0.01s w + ls 01.sh [root@localhost shell]# bash -x 01.sh + echo 123 123 + w 23:40:29 up 1:23, 1 user, load average: 0.00, 0.01, 0.03 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.72.1 22:26 5.00s 0.21s 0.00s w + ls 01.sh
date命令用於顯示或設置系統時間與日期。
命令選項:調試
[root@xavi ~]# date //當前日期 2018年 04月 17日 星期二 22:06:22 CST [root@xavi ~]# 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 [root@xavi ~]# date +%Y //年 2018 [root@xavi ~]# date +%y //年縮寫 18 [root@xavi ~]# date +%m //月 04 [root@xavi ~]# date +%Y%m%d //年月日 20180417 [root@xavi ~]# date +%F 2018-04-17 [root@xavi ~]# date +%H //小時 22 [root@xavi ~]# date +%M //分鐘 23 [root@xavi ~]# date +%S //秒 10 [root@xavi ~]# date +%s //時間戳,時間戳是從1970年1月1日(UTC/GMT的午夜)開始所通過的秒數,不考慮閏秒 1523975099 [root@xavi ~]# date +%T //時間的完整顯示 22:27:04 [root@xavi ~]# date "+%Y-%m-%d %H:%M:%S %w" // 年月日,時分秒,星期 2018-04-17 22:20:50 2 [root@xavi ~]# date -d "-1 day" 2018年 04月 16日 星期一 22:31:20 CST [root@xavi ~]# date -d "-1 day" +%F 2018-04-16 [root@xavi ~]# date -d "-1 month" +%F 2018-03-17 [root@xavi ~]# date -d "-1 year" +%F 2017-04-17 [root@xavi ~]# date -d "-1 hour" +%T 21:44:30 [root@xavi ~]# date +%s -d "2018-04-17 22:46" // 日期轉化爲時間戳 1523976360
當腳本中使用某個字符串較頻繁而且字符串長度很長時就應該使用變量代替 使用條件語句時,常使用變量 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]