Linux — 進階篇_Shell(環境變量、位置參數變量、預定義變量、運算符、條件判斷、流程控制、read讀取控制檯輸入、系統函數、自定義函數)


歡迎訪問筆者個人技術博客:http://rukihuang.xyz/

一、爲什麼要學習Shell編程

  1. Linux運維工程師在進行服務器集羣管理時,需要編寫Shell程序來進行服務器管理。
  2. 對於JavaEEhe Python程序員來說,是工作的需要,如要求編寫一些Shell腳本進行程序或服務器的維護。
  3. 對於大數據程序員來說,需要編寫Shell程序來管理集羣。

二、Shell是什麼

  • Shell是一個命令行解釋器,它爲用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序,用戶可以用Shell來啓動、掛起、停止甚至是編寫一些程序。

三、Shell腳本的快速入門

3.1 腳本格式要求

  1. 腳本以#!/bin/bash開頭
  2. 腳本需要有可執行權限

3.2 編寫第一個Shell腳本

  • 創建一個Shell腳本,輸出一個Hello world

  • 步驟如下:

  1. 先創建一個myshell.sh文件,並輸入命令

在這裏插入圖片描述

  1. 賦予可執行權限

在這裏插入圖片描述

  1. 執行,相對路徑和絕對路徑都可以

在這裏插入圖片描述

四、Shell變量

4.1 Shell變量的介紹

  1. Linux Shell變量分爲:系統變量用戶自定義變量
  2. 系統變量:
    1. $HOME
    2. $PWD
    3. $SHELL
    4. $USER

在這裏插入圖片描述

在這裏插入圖片描述

  1. 顯示當前shell中所有的變量:set

4.2 Shell變量的定義

4.2.1 基本語法

  1. 定義變量:變量=值
  2. 撤銷變量:unset 變量
  3. 聲明靜態變量:readonly 變量=值(靜態變量是不能unset的)

在這裏插入圖片描述

4.2.2 定義變量的規則

  1. 變量名稱可以由字母、數字、下劃線組成,但是不能以數字開頭
  2. 等號兩側不能有空格
  3. 變量名稱一般習慣爲大寫

4.2.3 將命令的返回值賦給變量

  1. A=ls -l 目錄名。反引號(這裏編程代碼塊了)
  2. A=$(ls -l 目錄名)$等價於反引號

在這裏插入圖片描述

在這裏插入圖片描述

4.3 設置環境變量

4.3.1 基本語法

  1. export 變量名=變量值:將shell變量輸出爲環境變量
  2. source 配置文件:讓修改後的配置信息立即生效
  3. echo $變量名:查詢環境變量的值

4.3.2 快速入門

  1. /etc/profile文件中定義TOMCAT_HOME環境變量
  2. 查看環境變量TOMCAT_HOME的值
    1. 讓其生效才能查看:source /etc/profile
  3. 在另外一個shell程序中使用TOMCAT_HOME

在這裏插入圖片描述

在這裏插入圖片描述

  • linux中的多行註釋:<<要註釋的內容!

4.4 位置參數變量

4.4.1 介紹

  • 當執行一個shell腳本時,如果希望獲取到命令行的參數信息,就可以使用到位置參數變量
    • 如:./myshell.sh 100 200,可以在myshell腳本中獲取到這個命令行所包含的信息

4.4.2 基本語法

  1. $n:n爲數字,$0代表命令本身,$1-$9代表第一到第九個參數,十以上的參數,需要用大括號包含,${10}
  2. $*:這個變量代表命令行中所有的參數,把所有的參數看做一個整體
  3. $@:這個變量也代表命令行中的所有參數,把每個參數區分對待
  4. $#:這個變量代表命令行中所有參數的個數

4.4.3 應用實例

  • 編寫一個shell腳本positinoPara.sh,在腳本中獲取到命令行的各個參數信息

在這裏插入圖片描述

在這裏插入圖片描述

4.5 預定義變量

4.5.1 基本介紹

  • shell事先已經定義好的變量,可以直接在shelle腳本中使用

4.5.2 基本語法

  1. $$:當前進程的進程號(PID)
  2. $!:後臺運行的最後一個進程的進程號(PID)
  3. $?:最後一次執行的命令的返回狀態。
    1. 如果這個變量的值爲0,證明上一個命令正確執行;
    2. 如果這個變量的值爲非0,則證明上一個命令執行不正確。

在這裏插入圖片描述

在這裏插入圖片描述

4.6 運算符

4.6.1 基本介紹

  • 在shell中進行運算操作

4.6.2 基本語法

  1. $((運算式))$[]
  2. expr m + n
    1. 注意expr運算符間要有空格
    2. \* / %:乘、除、取餘

在這裏插入圖片描述

4.7 條件判斷

4.7.1 判斷語句 基本語法

  • [ condition ]:condition前後都要有空格
    • 非空返回true,可使用$?驗證(0爲true,>1爲false
  • 應用實例
[ nihao ] true
[ ] false

4.7.2 常用判斷條件

兩個整數的比較

  1. =:字符串比較
  2. -lt:小於
  3. -le:小於等於
  4. -eq:等於
  5. -gt:大於
  6. -ge:大於等於
  7. -ne:不等於

按照文件權限進行判斷

  1. -r:有讀的權限
  2. -w:有寫的權限
  3. -x:有執行的權限

按照文件類型判斷

  1. -f:文件存在並且是一個常規的文件
  2. -e:文件存在
  3. -d:文件存在並且是一個目錄

4.7.3 應用實例

  • "ok"是否等於“ok”

在這裏插入圖片描述

  • 23是否大於等於22

在這裏插入圖片描述

  • /root/install.log目錄中的文件是否存在

在這裏插入圖片描述

4.8 流程控制

4.8.1 if 判斷

  • 基本語法
if[ 條件判斷式 ]
 then
 	程序
 elif[ 條件判斷式 ]
 then
 	程序
fi
  • 注意:[ 條件判斷式 ]中條件判斷式兩邊都有空格

在這裏插入圖片描述

4.8.2 case 語句

  • 基本語法
case $變量名 in 
"值1")	
	如果變量的值等於值1,則執行程序1
	;;
"值2")
	如果變量的值等於值2,則執行程序2
	;;
"值3")
	如果變量的值等於值3,則執行程序3
	;;
*)
	如果變量的值都不是以上的值,則執行此程序
	;;
esac

在這裏插入圖片描述

4.8.3 for循環

  • 基本語法1
for 變量 in 值1 值2 值3
do
	程序
done

在這裏插入圖片描述

在這裏插入圖片描述

  • 基本語法2
for ((初始值;循環控制條件;變量變化))
do
	程序
done

在這裏插入圖片描述

4.8.4 while循環

  • 基本語法
while [ 條件判斷式 ]
do
	程序
done

在這裏插入圖片描述

4.9 read讀取控制檯輸入

4.9.1 基本語法

  • read [選項] [參數]

  • 選項:

    • -p:指定讀取值時的提示符
    • -t:指定讀取值時等待的時間(秒),如果沒有在指定的時間內輸入,就不再等待
  • 參數:

    • 變量名:指定讀取值的變量名

在這裏插入圖片描述

4.10 函數

4.10.1 函數介紹

  • shell編程和其他編程語言一樣,有系統函數,也可以自定義函數。

4.10.2 系統函數

basename

  • 基本語法1:basename [pathname] [suffix]
    • 功能:返回完整路徑最後/的部分,常用於獲取文件名;若指定後綴,就會把後綴刪除

在這裏插入圖片描述

dirname

  • 基本語法:dirname [pathname]
    • 功能:返回完整路徑最後/的前面部分,常用於返回路徑部分

在這裏插入圖片描述

4.10.3 自定義函數

  • 基本語法
[function] funname[()]
{
	Action;
	[return int;]
}
  • 調用直接寫函數名:funname[值]

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章