shell腳本(一)

 本周是來馬哥教育的第四周,本周重點是shell腳本的編寫,本篇博客也是以shell腳本的簡述為主。

一.shell腳本的概念及意義

    shell腳本是linux下的一種編程方式,百度百科給出這樣的釋義:腳本(shell script)是利用shell的功能所寫的一個程序,這個程序是使用純文本文件,將一些shell的語法與指令寫在里面,然后用正規表示法,管道命令以及數據流重導向等功能,以達到我們所想要的處理目的。說白了,就是為了解決linux的實際問題,臨時寫的一個小程序來完成當前的工作,如果需要多次使用,還能保存下來循環使用。

二.腳本的規范

    腳本使用了shebang機制,即這樣的格式:!#/bin/bash、!#/use/bin/python。需要簡單的進行shell腳本的解釋。下面舉一個樣例:
    #!/bin/bash
    # ——————————————
    # Filename: hello.sh
    # Revision: 1.1
    # Date: 2017/08/05
    # Author: Mr.Dong
    # Email: Dong@gmail.com
    # Website: www.magedu.com
    # Description: This is the first script
    # ——————————————
    echo “hello world”
    利用這些信息,可以很快知道這個腳本的用處,以便于工作的使用。
    在運行的時候可以使用下面兩條命令進行腳本調試
    bash -n hello.sh 來查看腳本的語法錯誤
    bash -x hello.sh 可以查看腳本的執行步驟

三.變量

    1.本地變量
        本地變量只對當前shell有效,對子shell無效(SHLVL查看是幾級shell)。
        變量賦值:name=’value’
        字符串賦值:name=”root”
        變量引用:name=”$USER”
        命令引用:name=COMMAND name=$(COMMAND)
        顯示已定義的所有變量:set
        刪除變量:unset name
    2.環境變量
        環境變量對當前SHELL及其子SHELL均有效。
        變量的聲明和賦值命令: 
        export name=VALUE
        declare -x name=VALUE
        變量的引用:$name,${name}
        顯示所有的環境變量命令:
        env printenv export declare -x
        bash自帶環境變量:
        PATH SHELL USER UID HOME PWD SHLVL LANG MAIL HOSTNAME HISTSIZE
    3.只讀變量
        聲明只讀變量:
        readonly name 
        declare -r name
        查看只讀變量: readonly -p
    4.位置變量
        $1, $2, … :對應第1 、第2 等參數,shift [n] 換位置
        $0:  命令本身
        $:  傳遞給腳本的所有參數,全部參數合為一個字符串
        $@:  傳遞給腳本的所有參數,每個參數為獨立字符串
        $#:  傳遞給腳本的參數的個數
        $@ $
  只在被雙引號包起來的時候才會 有 差異
        set — 

四.算術運算與邏輯運算

    1.算術運算
      算數運算符:+ – * / %(取余) **(乘方)
      常用的運算:
        (1) let var= 算術表達式
        (2) var=$[ 算術表達式]
        (3) var=$(( 算術表達式))
        (4) var=$(expr arg1 arg2 arg3 …)
        (5) declare –i var =  數值
        (6) echo ‘ 算術表達式’ | bc
      產生隨機數命令:echo $[$RANDOM%number]  0-number之間的隨機數
      賦值運算:+= -= *= /= %=
      自增和自減:
      let var+=1
        let var++
      let var-=1
      let var–
    2.邏輯運算
      true=0 false=1
      與 1&&1=1 1&&0=0 0&&1=0 0&&0=0
      或 1||1=1 1||0=1 0||1=1 0||0=0
      非 !1=0 !0=1

五.test命令

    test命令是shell環境中測試條件表達式的實用工具。
    例如:test “$A” == “$B” && echo “Strings are equal”
    [ “$A” == “$B” ] && echo “Strings are equal”
    這兩種表述表達同一種意思。
    [[  ]]表示支持正則表達式
    數值比較:         字符串比較:
     -gt 是否大于      >
     -ge 是否大于等于  >=
     -eq 是否等于      ==
     -ne 是否不等于    !=
     -lt 是否小于      <
     -le 是否小于等于  <=

本篇博客只是對本周的shell腳本的學習的總結,后面還有拔高部分的學習,未完待續~

原創文章,作者:Mr.DONG,如若轉載,請注明出處:http://www.www58058.com/83768

(0)
Mr.DONGMr.DONG
上一篇 2017-08-05
下一篇 2017-08-05

相關推薦

  • 第七周作業

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; ]#mke2fs -t ext4 -b 2048 -L MYDATA -m 2 O acl /dev/sda1 (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件…

    Linux干貨 2017-03-11
  • 文件查找工具—find命令總結

    描述:   find命令用來在指定目錄下查找文件。任何位于參數之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進行顯示。 說明:  工作特點:  查找速度略慢; 精確查找;實時查找;可能只搜索用戶具備讀取和執行權限的目錄…

    Linux干貨 2016-08-18
  • 馬哥教育網絡班21期第六周作業

    詳細總結VIM編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加# cp /etc/rc.d/rc.sysinit /tmp vim /tmp/rc.sysinit :%s/^[[:space:]]\+/#/…

    Linux干貨 2016-08-22
  • Nginx4大模塊——proxy、headers、upstream、stream模塊

    Nginx 應用程序發布: 灰度模型:          (1) 如果存在用戶會話;              從服務器上拆除會話;   &…

    Linux干貨 2016-10-29
  • 群集簡介和LVS_nat模式配置

    群集簡介: 群集(或集群)和稱呼來自于英文單詞cluster,表示一群、一串的意思,用在服務器領域則表示大量服務器的集合體,以區分于單個服務器。 根據實際企業環境的不同,群集所提供的功能也各不相同,采用的技術細節也可能各有千秋,但無論哪種群集,都至少包括兩臺節點服務器。而對外表現為一個整體,只提供一個訪問入口(域名或IP地址),相當于一臺大型計算機。根據群集…

    Linux干貨 2017-02-13
  • 日志收集工具EFK之fluent部署手稿

    Edit EFK fluent部署安裝 1. 環境介紹 Centos 6.5 64bit 2. 安裝 td-agent介紹 fluent 考慮到靈活可擴展性,使用Ruby編寫,部分功能考慮性能使用C語言編寫。普通用戶安裝操作Ruby daemon還是有一定難度的??紤]到flunt的上手難度, fluent專門發布了穩定發布包,就也是所謂的td-agent. …

    Linux干貨 2016-03-24
欧美性久久久久