Shell編程(一)

[toc]shell

shell編程

1、shell 腳本介紹

Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋樑。Shell 既是一種命令語言,又是一種程序設計語言。
shell是一種腳本語言;
可使用邏輯判斷、循環等語法;
可自定義函數;
shell是系統命令的集合;
shell腳本能夠實現自動化運維,能大大增長咱們的運維效率;編程

說明了shell 腳本在工做的重要性,shell腳本就是一些命令的集合,是自動化運維的重要部分bash

2、 Shell腳本結構和執行

下面跟着步驟來一步步學習如何寫shell腳本運維

2.1 建立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

mark

本例中,腳本文件01.sh,進入編輯狀態後,第一行要以#!/bin/bash開頭,表示該文件使用的是bash語法.而/bin/bash是Bash的解釋器命令路徑.函數

2.2 執行該腳本 #sh.01.sh

[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這一行刪除,運行命令後也能執行但這樣不符合規範.學習

mark

2.3 另外一種方法執行該腳本 #./01.sh

使用該方法運行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

2.4 查看解釋路徑/bin/bash和/bin/sh

mark

[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腳本,可是本機驗證成功,不表明其餘機器虛擬機是否成功,後續測試設計

2.5 舉例腳本的編輯方式,註釋等

[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.
#

mark

2.6 sh -x 查看shell腳本執行過程,方便後續調試

[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

2.7 sh -n 檢測shell腳本是否有語法錯誤

mark

3、date命令用法

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

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]
相關文章
相關標籤/搜索