shell指令碼基礎入門

來源:互聯網
上載者:User

標籤:變數   linux   解譯器   指令碼   bash設定檔   

bash指令碼編程

一、bash指令碼編程

    bash指令碼編程(可以理解為命令的堆砌)
    程式:包含語句和運算式(有判斷和迴圈)
        順序執行
        選擇執行
        迴圈執行
    程式 = 指令 + 資料

    瞭解:編程分為2種:面向過程編程:以指令為中心組織資料;物件導向編程:以資料為中心組織指令

    故指令碼編程可以歸納為面向過程的編程。

    程式的執行模型 :
    1、編譯執行:原始碼—>預先處理—>編譯—>彙編—>連結(編譯器)
    2、解釋執行:源碼—>(解譯器)通過解譯器執行
    註:bash指令碼的解譯器bash

二、bash指令碼的書寫 
    shebang(定義指令碼指定解譯器),一般儲存為.sh,linux沒有嚴格的尾碼要求
#!/bin/bash

#!/bin/bashcat /etc/shells  sleep 20   #執行的時候,建立一個新的子進程,睡眠等待,子進程佔用父進程進行等待

註:運行指令碼的時候,要書寫絕對路徑。或者直接書寫bash test.sh臨時給予許可權

bash -x test.sh 調試運行

[[email protected] tmp]# bash -x test.sh + cat /etc/shells #每個命令逐條顯示,如有錯誤會進行提示/bin/sh/bin/bash/sbin/nologin/bin/dash/bin/tcsh/bin/csh+ sleep 20         #這裡是等待了20秒之後才繼續執行下一條命令+ dasdtest.sh: line 4: dasd: command not found[[email protected] tmp]#

 三、變數相關知識

    變數的定義:命名的記憶體空間
    變數名和變數值組成,不同的視角變數有不同的分類

    1、資料類型(按內容分)
    強型別:例如c語言,對類型進行嚴格區分
    弱類型:bash指令碼編程等,bash把所有值都預設當作字元

    資料類型的作用
    (1)定義了資料存放區格式
    (2)資料的表示範圍
    (3)可以參與的運算類型不一樣

    2、類型(按格式分)
    數值型:http://blog.51cto.com/user_index.php?action=addblog_new&did=126489
        精確數值型:整數
        近似數值型:float(單精確度)double(雙精確度)課外作業(浮點數的儲存格式)
    字元型:不區分是否為單個字元

    布爾型:true,false-->0,1

        幾個重要的邏輯運算子:             
        邏輯與運算:  &&    a  &&  b    全真才為真,有假為假
        邏輯或運算:  ||    a  ||  b    全假才為假,有真為真
        邏輯非運算:  !    !a         取反的運算
四、bash變數類型
        (1)本地變數:只對當前shell進程有效,對當前shell之外的shell無效(如父shell進程和子shell進程都無效)

[[email protected] tmp]# aa=3[[email protected] tmp]# echo $aa3[[email protected] tmp]# bash[[email protected] tmp]# echo $aa[[email protected] tmp]# aa=2[[email protected] tmp]# exitexit[[email protected] tmp]# echo $aa3[[email protected] tmp]#

        (2)環境變數:對當前shell進程及其子shell進程有效

[[email protected] tmp]# export HELLO="hello1"[[email protected] tmp]# echo $HELLOhello1[[email protected] tmp]# bash[[email protected] tmp]# echo $HELLOhello1[[email protected] ~]# env | grep ‘HELLO‘HELLO=hello1[[email protected] ~]# unset HELLO    #取消環境變數的設定(這裡只對子進程生效)[[email protected] ~]# env | grep ‘HELLO‘[[email protected] ~]# echo $HELLO[[email protected] ~]# exitexit[[email protected] ~]# echo $HELLOhello1[[email protected] ~]#

        註:env(printenv)    顯示當前shell中的所用環境變數

[[email protected] tmp]# env #這裡只列出部分環境變數,env=printenvHOSTNAME=localhost.localdomainTERM=xtermSHELL=/bin/bashHISTSIZE=1000SSH_CLIENT=192.168.199.180 54823 22QTDIR=/usr/lib64/qt-3.3QTINC=/usr/lib64/qt-3.3/includeSSH_TTY=/dev/pts/1USER=root

        (3)局部變數:僅對某一段代碼空間有效變數,通常用於指令碼函數
        (4)位置變數:$1  $2,...
        (5)特殊變數:$?  $0  $#  $$  $*  [email protected]  
五、變數的引用及命名
    1、${變數名}==變數的引用        
        ·強引用:  ‘‘   echo ‘root shell  is   $SHELL‘ 原樣輸出,不能解釋$符號 

        ·弱引用: “”  echo “root shell  is   $SHELL” 輸出“root shell is /bin/bash”

    2、變數的命名規則
        1、不能用程式中的關鍵字:if  elif  fi  then  for  ....
        2、只能使用數字、字母或底線,且不能以數字開頭
        3、盡量做到見名知意
六、bash的設定檔

    1、profile類:為互動式登陸的shell進程提供配置。

        ·對所有使用者有效設定檔即全域有效: /etc/profile和/etc/profile.d/*.sh

        ·僅對目前使用者有效設定檔即使用者個人有效:~/bash_profile

        註:profile類設定檔的功用:

        (1)用以定義環境變數

        (2)運行命令或指令碼

    2、bashrc類:為非互動式登陸的shell進程提供配置。

        ·全域有效:/etc/bashrc

        ·個人使用者有效:~/.bashrc

        註:bashrc類設定檔的功用:

        (1)定義本地變數

        (2)定義命令別名(alias)

        如何使修改後的bash設定檔重新生效:(2種方法)

        source設定檔 或者 .設定檔

        設定檔生效的優先順序:

    ·互動式登陸:/etc/profile->/etc/profile.d/*.sh->~/bash_profile->~/.bashrc->/etc/bashrc

所以定義此檔案可以使其他檔案全都生效。

    ·非互動式登陸:~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh


本文出自 “行成于思” 部落格,請務必保留此出處http://meaningful.blog.51cto.com/4543452/1631658

shell指令碼基礎入門

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.