天天看點

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

shell程式設計規範與變量

  • 一、shell腳本概述
    • 1.shell的簡述
    • 2.shell腳本的概念
    • 3.shell的作用
    • 4.Linux中有哪些Shell?
    • 5.shell腳本的構成
  • 二、開始編寫你的第一天shell腳本
    • 1.執行腳本的三種方法
      • 方法一: 指定路徑的指令,要求檔案必須有x權限。
      • 方法二:指定Shell來解釋腳本,不要求檔案必須有x權限。
      • 管道操作指令 |
    • 2.重定向操作指令
      • 互動式硬體裝置
    • 3.重定向操作
  • 三、深度解析shell腳本變量
    • 1.變量的作用
    • 2.變量的分類
    • 3.自定義變量
    • 4.變量指派的特殊操作
    • 5.從鍵盤輸入内容為變量指派
    • 6.設定變量的作用範圍
    • 7.數制變量的運算
  • 四、特殊變量
    • 1.環境變量
    • 2.隻讀變量
    • 3.位置變量
    • 4.預定義變量

一、shell腳本概述

1.shell的簡述

什麼是Shell?就是與核心溝通的界面、應用程式、KDE等等。比如你要播放音樂,你的計算機通過你在Shell輸入的打開音樂的指令,Shell在告訴作業系統的核心使用者希望打開音樂,核心在通過cpu排程、記憶體管理、磁盤輸入輸出等工作,将硬體調動,這時硬體聲霸卡才會工作,硬體才是實際的工作者。

Shell ( 殼程式)是一個特殊的應用程式,它介于作業系統核心與使用者之間,充當了一一個“指令解釋器”的角色,負責接收使用者輸入的操作指令(指令)并進行解釋,将需要執行的操作傳遞給核心執行,并輸出執行結果。

2.shell腳本的概念

1.将要執行的指令按順序儲存到一個文本檔案

2.給該檔案可執行權限

3.可結合各種Shell控制語句以完成更複雜的操作

3.shell的作用

1.即指令解釋器,“翻譯官”

2.介于系統核心與使用者之間,負責解釋指令行

3.接收使用者輸入的操作指令并進行解釋,之後将需要執行的解釋傳遞給核心執行并輸出結果

4.登入後預設使用shell程式,一般為/bin/bash

5.不同的Shell的内部指令,運作環境等會有所差別

4.Linux中有哪些Shell?

檢查一下/etc/shells這個檔案,裡面就是Li nux所包含的Shell。

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

最常用的就是bash、tcsh、csh、sh、nologin這些shell。這些shell都是依據Linux發展者的不同所創造出的不同版本。

bash:基準于GNU的架構下發展出的Shell。|

csh: 文法有點類似于c語言的Shell。

tcsh:整合了csh,提供更多的功能。

sh:已經被bash所替換。

nologin:奇怪的shell, 這個shell可以讓使用者無法登入主機。.

注: bash (/bin/bash) 是目前大多數Linux版本采用的預設Shell。

為什麼系統上合法的Shell要寫入/etc/shells這個檔案呢?

這是因為系統某些服務運作過程中,會去檢查使用者能夠使用的Shell,而這些shel1的查詢就是由/etc/shells這個檔案。.

使用者什麼時候可以取得shell來工作?使用者預設會取得哪一個shell?

當使用者登入的時候,系統就會給我一個shell讓我來用, 而這個登入取得的Shell就記在/etc/passwd這個檔案内。

5.shell腳本的構成

1.腳本申明(解釋器) :若第一行為“#!/bin/bash”, 表示此行以下的代碼語句是通過/bin/bash程式來解釋執行

#!/bin/bash為預設解釋器。還有其它類型的解釋器,比如 # !/usr/bin/python、 #!/usr/bin/expect。

2.注釋資訊:以“#”開頭的語句表示為注釋資訊,被注釋的語句在運作腳本時不會被執行。

3.可執行語句:比如echo指令,用于輸出" "之間的字元串

二、開始編寫你的第一天shell腳本

編寫腳本代碼

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

賦權

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

一般都是要賦權的,添加可執行權限以確定腳本能正常執行

1.執行腳本的三種方法

方法一: 指定路徑的指令,要求檔案必須有x權限。

chmod +x / root/ first. sh

指定絕對路徑: /root/ first.sh

指定相對路徑: . /first. sh

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量
shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

方法二:指定Shell來解釋腳本,不要求檔案必須有x權限。

sh 腳本路徑: sh first. sh

source 腳本路徑: . first.sh 或者source first. sh .

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

管道操作指令 |

将管道符号“|”左側的指令輸出的結果,作為右側指令的輸入(處理對象),同一行指令中可以使用多個管道。

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

2.重定向操作指令

shell腳本的特點是批量自動化處理,且操作過程位于背景,不需要使用者在操作過程中有任何幹預

那麼你怎麼能快速的找到自己想要的資訊呢?這個往往在排錯的時候很關鍵

是以學會提取和過濾執行資訊非常重要!

互動式硬體裝置

标準輸入:從該裝置接收使用者輸入的資料

标準輸出:通過該裝置向使用者輸出資料

标準錯誤:通過該裝置報告執行出錯資訊

類型 裝置檔案 檔案描述編号 預設裝置
标準輸入 /dev/stdin 鍵盤
标準輸出 /dev/stdout 1 顯示器
标準錯誤輸出 /dev/stderr 2 顯示器

可以改變輸入、輸出内容的方向,而不使用預設的标準輸入、輸出裝置(鍵盤和顯示器),這種操作稱之為“重定向”

3.重定向操作

類型 操作符 用途
重定向輸入 < 從指定的檔案讀取資料,而不是從鍵盤輸入
重定向輸出 > 将輸出結果儲存到指定的檔案(覆寫原有内容)
/ >> 将輸出結果追加到指定的檔案尾部
标準錯誤輸出 2> 将錯誤資訊儲存到指定的檔案(覆寫原有内容)
/ 2>> 将錯誤資訊追加到指定的檔案中
混合輸出 &> 将标準輸出、标準錯誤的内容儲存到同一個檔案中
/ 2>&1 将标準錯誤輸出重定向到标準輸出
shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量
shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

三、深度解析shell腳本變量

1.變量的作用

用來存放系統和使用者需要使用的特定參數(值)

變量名:使用固定的名稱,由系統預設或使用者定義

變量值:能夠根據使用者設定、系統環境的變化而變化

2.變量的分類

類型 解釋
自定義變量 由使用者自己定義、修改和使用
環境變量 由系統維護,用于設定工作環境
位置變量 通過指令行給腳本程式傳遞參數
預定義變量 Bash中内置的一類變量,不能直接修改

3.自定義變量

自定義變量是由系統使用者自己定義的變量,隻在使用者自己的shell環境中有效,是以又稱為本地變量

在編寫shell腳本的時候,通常會設定一些特定的自定義變量

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

4.變量指派的特殊操作

指派時使用引号

雙引号:允許通過 符 号 引 用 其 他 變 量 值 單 引 号 : 禁 止 引 用 其 他 變 量 值 , 符号引用其他變量值 單引号:禁止引用其他變量值, 符号引用其他變量值單引号:禁止引用其他變量值,視為普通字元

反撇号:指令替換,提取指令執行後的輸出結果

'…'與$(…)作用一緻

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

5.從鍵盤輸入内容為變量指派

從鍵盤輸入内容為變量指派

基本格式為:

read [-p “提示資訊”] 變量名

echo $變量名

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

第二種從鍵盤輸入内容為變量指派

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

6.設定變量的作用範圍

預設情況下,新定義的變量隻在目前的Shell環境中有效,是以稱為局部變量。當進入子程式或新的子Shell環境時,局部變量将無法再使用

可以通過内部指令export将指定的變量導出為全局變量,使使用者定義的變量在所有的子Shell環境中能夠繼續使用

格式1:export 變量名

格式2:export 變量名=變量值

使用 pstree 指令檢視Shell環境

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

輸入 bash 指令進入子Shell環境

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量
shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

7.數制變量的運算

格式: expr 變量1  運算符  變量2  [運算符 變量3]

運算符:+加法、一減法、\ *乘法、/除法、%取餘

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量
shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

四、特殊變量

1.環境變量

環境變量由系統提前建立,用來設定使用者的工作環境

使用env指令可以檢視到目前工作環境下的環境變量

常見的環境變量:

PWD、PATH、USER、SHELL、HOME

USER表示使用者名稱

HOME表示使用者的宿主目錄

LANG表示語言和字元集

PWD表示目前所在的工作目錄

PATH表示可執行程式的預設搜尋路徑

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量
shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

2.隻讀變量

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

3.位置變量

當執行指令行操作時,第一個字段表示指令名或腳本程式名,其餘的字元串參數按照從左到右的順序依次指派給位置變量

$n:n為數字,$0代表指令本身,$1- 9 代 表 帶 一 個 到 第 九 個 參 數 , 十 以 上 的 參 數 需 要 使 用 大 括 号 表 示 , 比 如 第 十 個 參 數 為 9代表帶一個到第九個參數,十以上的參數需要使用大括号表示,比如第十個參數為 9代表帶一個到第九個參數,十以上的參數需要使用大括号表示,比如第十個參數為{10}

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量
shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

4.預定義變量

∗ 、 *、 ∗、@:表示指令或腳本要處理的參數。

$*:把所有參數看成以空格分隔的一個字元串整體,代表"$1 $2 $3 $4"。

$@:把各個參數加上雙引号分隔成n份的參數清單,每個參數是獨立的,代表"$1" “$2” “$3” “$4”。

$0:表示目前執行的腳本或指令的名稱。

$#:表示指令或腳本要處理的參數的個數。

$?:表示前一條指令或腳本執行後的傳回狀态碼,傳回值為0表示執行正确,傳回任何非0值均表示執行出現異常。也常被用于Shell腳本中return退出函數并傳回的退出值。

shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量
shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量
shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量
shell程式設計規範與變量一、shell腳本概述二、開始編寫你的第一天shell腳本三、深度解析shell腳本變量四、特殊變量

繼續閱讀