Shell程式設計學習筆記一(變數、運算子)
1.Shell是什麼
Shell 是一個命令列直譯器,它為使用者提供了一個向 Linux 核心傳送請求以便執行程式的介面系統級程式,使用者可以用 Shell 來啟動、掛起、停止甚至是編寫一些程式。
Shell(殼)可操控 Core(核心)
2.Shell指令碼的執行方式
(1)指令碼格式要求
- 指令碼以#!/bin/bash 開頭
- 指令碼需要有可執行許可權
(2)編寫第一個Shell指令碼
- 需求說明:建立一個 Shell 指令碼,輸出 hello world!
(3)指令碼的常用執行方式
- 方式 1:輸入指令碼的絕對路徑或相對路徑
1)首先要賦予helloworld.sh
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(運算子間要有空格)
- 求出命令列的兩個引數[整數]的和