1. 程式人生 > >Shell程式設計學習筆記一(變數、運算子)

Shell程式設計學習筆記一(變數、運算子)

1.Shell是什麼

Shell 是一個命令列直譯器,它為使用者提供了一個向 Linux 核心傳送請求以便執行程式的介面系統級程式,使用者可以用 Shell 來啟動、掛起、停止甚至是編寫一些程式。
Shell(殼)可操控 Core(核心)
在這裡插入圖片描述

2.Shell指令碼的執行方式

(1)指令碼格式要求

  • 指令碼以#!/bin/bash 開頭
  • 指令碼需要有可執行許可權

(2)編寫第一個Shell指令碼

  • 需求說明:建立一個 Shell 指令碼,輸出 hello world!
    在這裡插入圖片描述

(3)指令碼的常用執行方式

  • 方式 1:輸入指令碼的絕對路徑或相對路徑
    1)首先要賦予helloworld.sh
    指令碼的 x 許可權
    2)執行指令碼
    在這裡插入圖片描述
  • 方式 2:sh+指令碼,不推薦
    說明:不用賦予指令碼 x 許可權,直接執行即可
    在這裡插入圖片描述

3.Shell的變數

(1)Shell的變數介紹

Linux Shell 中的變數分為,系統變數和使用者自定義變數。
2)系統變數:$HOME、$PWD、$SHELL、$USER 等等…
在這裡插入圖片描述
3)顯示當前 shell 中所有變數:set

(2)Shell變數的定義

  • 基本語法
    1)定義變數:變數=值
    2)撤銷變數:unset 變數
    3)宣告靜態變數:readonly 變數,注意:不能 unset
    4)使用變數需在變數名前加上$
  • 快速入門案例
    1)定義變數 A,撤銷變數 A
    在這裡插入圖片描述

    2)宣告靜態的變數 B=2,不能 unset
    在這裡插入圖片描述
    3)把變數提升為全域性環境變數,可供其他 shell 程式使用【後面環境變數部分舉例】

(3)定義變數的規則

  • 變數名稱可以由字母、數字和下劃線組成,但是不能以數字開頭。
  • 等號兩側不能有空格
  • 變數名稱一般習慣為大寫

(4)將命令的返回值賦給變數

  • A=`ls -la` 反引號,執行裡面的命令,並把結果返回給變數 A
  • A=$(ls -la) 等價於反引號
    在這裡插入圖片描述

4.設定環境變數

(1)基本語法

1)export 變數名=變數值 (功能描述:將 Shell 變數輸出為環境變數)
2)source 配置檔案(功能描述:讓修改後的配置資訊立即生效)
3)echo $變數名(功能描述:查詢環境變數的值)
在這裡插入圖片描述

(2)快速入門案例

1)在/etc/profile 檔案中定義 TOMCAT_HOME 環境變數在這裡插入圖片描述
2)檢視環境變數 TOMCAT_HOME 的值
echo $TOMCAT_HOME
3)在另外一個 shell 程式中使用 TOMCAT_HOME
在這裡插入圖片描述
注意:在輸出 TOMCAT_HOME 環境變數前,需要讓其生效
使用命令 source /etc/profile 或重啟

5.位置引數變數

(1)介紹

當我們執行一個 shell 指令碼時,如果希望獲取到命令列的引數資訊,就可以使用到位置引數變數,比如 : ./myshell.sh 100 200 , 這個就是一個執行 shell 的命令列,可以在 myshell 指令碼中獲取到引數資訊(相當於呼叫函式時傳入的引數)

(2)基本語法

$n (功能描述:n 為數字,$0 代表命令本身,$1- $9 代表第一到第九個引數,十以上的引數,十以上的引數需要用大括號包含,如${10})
$* (功能描述:這個變數代表命令列中所有的引數,$*把所有的引數看成一個整體)
[email protected](功能描述:這個變數也代表命令列中所有的引數,不過[email protected]把每個引數區分對待)
$#(功能描述:這個變數代表命令列中所有引數的個數)

(3)應用例項

編寫一個 shell 指令碼 positionPara.sh, 在指令碼中獲取到命令列的各個引數資訊
shell指令碼:
在這裡插入圖片描述
執行效果:
在這裡插入圖片描述

6.預定義變數

(1)介紹

shell 設計者事先已經定義好的變數,可以直接在 shell 指令碼中使用

(2)基本語法

  • $$ (功能描述:當前程序的程序號(PID))
  • $! (功能描述:後臺執行的最後一個程序的程序號(PID))
  • $?(功能描述:最後一次執行的命令的返回狀態。如果這個變數的值為 0,證明上一個命令正確執行;如果這個變數的值為非 0(具體是哪個數,由命令自己來決定),則證明上一個命令沒有正確執行)

(3)應用例項

在一個 shell 指令碼中簡單使用一下預定義變數
在這裡插入圖片描述

7.運算子

(1)基本語法

  • “$((運算式))”或“$[運算式]”
  • expr m + n (注意 expr 運算子間要有空格)
  • expr m - n
  • expr *, /, % 乘,除,取餘

(2)應用例項

  • 計算(2+3)*4 的值
    1)$((運算式))
    在這裡插入圖片描述
    2)$[運算式]
    在這裡插入圖片描述
    3)expr(運算子間要有空格)
    在這裡插入圖片描述
  • 求出命令列的兩個引數[整數]的和
    在這裡插入圖片描述