shell腳本編程之變量

一、創建shell腳本文件

  創建shell腳本時,必須在第一行指定要使用的shell。格式為:

  #!/bin/bash

  通常在shell腳本中,#代表注釋行,即不被執行的行,而第一行“#!”則是表示用哪個shell來執行腳本。

  實例:

1.jpg

  讓我們來執行一下這個腳本:

2.jpg

  上面的結果顯示無法找到此命令,其原因是shell對于命令的查找是通過PATH變量來進行的,如下圖所示,而新建的腳本的目錄并不在PATH變量中,解決方法:

  1、將shell腳本的目錄添加到PATH變量中;

  2、將腳本復制到PATH變量中存在的目錄中;

  3、使用絕對或相對路徑來執行腳本。

3.jpg

  我們使用第三個方法來執行腳本:

4.jpg

  結果又出現了報錯,提示沒有權限;如果需要運行腳本的話,此腳本必須擁有執行權限,而從下圖可以看到,此文件沒有任何的執行權限:

5.jpg

  添加執行權限后再次執行腳本:

6.jpg

  上面的結果中顯示腳本成功運行。

二、變量

  變量的類型包括:環境變量、本地變量(局部變量)、位置變量、特殊變量。

  1、環境變量

    可以使用set命令來查看當前活運的環境變量。

    在腳本中引用環境變量時要在變量名稱前加一個“$”符號。

7.jpg

  2、本地變量

    即本地變量,其命名規則如下:

     (1)只能包含字母語、數字和下劃線,并且不能以數字開頭

     (2)不應該跟系統中已有的環境變量重名

     (3)最好做到見名知義

7.jpg

    上面的例子中將兩個變量分別賦值后進行計算,并輸出計算的結果。

  3、位置變量

           $#:#為數字,表示參數的位置;如:$1表示腳本執行時所帶的第一個參數。

5.jpg

           如上例所示,腳本執行時帶了兩個參數9和10,分別對應$1和$2兩個變量,而$0對應的./test4,即命令本身。

           shift n命令可以對參數進行位移,使后面的位置變量向前移動n個位置,如果不帶具體的數字默認為1。

6.jpg

  4、特殊變量

    $?:用于顯示命令執行后返回的狀態碼,命令執行成功則返回1,否則為其它值;

8.jpg

          $#:命令執行時所帶的參數的個數;

9.jpg

          $*:參數列表,將所有參數當做一個參數,而不是多個對象;

          $@:參數列表,將所有參數當做多個獨立的對象。

10.jpg

            上例中的結果兩個變量并沒有什么區別,得到的結果是相同的。

            下面的例子可以看出兩個變量的不同之處:

11.jpg

三、測試腳本

  腳本執行時出現錯誤時,可以使用bash命令協助進行錯誤排除,其命令格式如下:

   bash [options] script

   常用的選項:

     -n:檢查腳本的語法錯誤,且只顯示語法出錯的內容;

     -x:檢查腳本的語法錯誤,且顯示腳本執行的每一步內容。

1.jpg

 

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

(0)
petmasterpetmaster
上一篇 2016-02-14 09:56
下一篇 2016-02-14 10:01

相關推薦

  • 第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 2、取出最后登錄到當前系統的用戶的相關信息。 注:命令last的信息中,首行為最后登錄的用戶 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 注:uniq命令顯示的重復必須滿足重復且相連條件,否則會分開計數。 4、將/etc/passwd中的第三…

    2017-02-19
  • 高可用keepalived結合haproxy代理WordPress(動靜分離)

    (1)A  B兩臺服務器做keepalived高可用,同時作為haproxy動靜分離后端代理。         (keepalived時主備模型,haproxy輪詢調度) (2)C 服務器搭建apache作為動態資源服務器 (3)D 服務器搭建nginx作為靜態資源服務器 (4)VIP:172.18.0.42…

    2017-05-20
  • CentOS系統啟動流程–上

    centos6啟動流程 1.加載BIOS的硬件信息,獲取第一個啟動設備。 2.讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息 3.加載核心操作系統的核心信息,核心開始解壓縮,并嘗試驅 動所有的硬件設備。 4.核型執行init程序并獲取運行信息。 5.Init執行/etc/rc.d/rc.sysinit文件。 6.啟動核心的外掛模塊(/etc/m…

    Linux干貨 2016-09-13
  • linux基礎命令

    顯示當前系統正在使用的shell:echo ${SHELL}  注意$在這里表示輸出的內容是變量命令提示符:prompt[root@localhost ~]# 表示管理員用戶 $表示普通用戶修改提示符格式 PS1=“[\e[31m][\u@\h \w]\$[\e[0m]”\h 主機名簡稱\H 主機名\w 當前…

    Linux干貨 2017-04-05
  • LVS專題: NAT和DR模型實現Web負載均衡

    LVS專題: NAT和DR模型實現Web負載均衡 前言: NAT實現 Real Server配置 Director配置 測試 實驗拓撲 實驗環境 實驗步驟 DR實現 Director配置 Real Server配置 測試 實驗拓撲 實驗環境 實驗步驟 總結: 前言: 在上篇文章中我們講了一些LVS的基本概念和相應模型的實驗原理和流程,本篇文章我們主要使用lv…

    2016-04-05
  • 馬哥教育網絡班22期第一周課程練習1-未聞花名

    一、cpu架構 計算機體系結構: 運算器、控制器(cpu還包含寄存器)、存儲器(內存)、輸入設備(鍵盤、硬盤等)、輸出設備(顯示器、硬盤等) cpu組成: 核心部件:運算器(加法器)、控制器()、寄存器(由于數據總線復用,為cpu保存現場,過程數據記錄)。 輔助部件:一、二、三級緩存:彌合CPU和內存速率不匹配。頻率控制器? 地址總線:內存尋址。 數據總線:…

    Linux干貨 2016-08-15
欧美性久久久久