shell腳本語言(超全超詳細)

1、shell的概述

在這裏插入圖片描述
shell 是一種腳本語言
腳本:本質是一個文件,文件裏面存放的是 特定格式的指令,系統可以使用腳本解析器 翻譯或解析 指令 並執行(它不需要編譯)
shell 既是應用程序 又是一種腳本語言(應用程序 解析 腳本語言)
shell命令解析器:
系統提供 shell命令解析器: sh ash bash
查看自己linux系統的默認解析:echo $SHELL
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
shell腳本是一種腳本語言,我們只需使用任意文本編輯器,按照語法編寫相應程序,增加可執行權限,即可在安裝shell命令解釋器的環境下執行

2、腳本的調用形式

打開終端時系統自動調用:/etc/profile 或 ~/.bashrc

/etc/profile
此文件爲系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行,系統的公共環境變量在這裏設置
開始自啓動的程序,一般也在這裏設置
~/.bashrc
用戶自己的家目錄中的.bashrc
登錄時會自動調用,打開任意終端時也會自動調用
這個文件一般設置與個人用戶有關的環境變量,如交叉編譯器的路徑等等
用戶手動調用:用戶實現的腳本
在這裏插入圖片描述

3、shell語法初識

3.1、定義以開頭:#!/bin/bash

#!用來聲明腳本由什麼shell解釋,否則使用默認shell
在這裏插入圖片描述

3.2、單個"#"號代表註釋當前行

第一步:編寫腳本文件

在這裏插入圖片描述

第二步:加上可執行權限

chmod +x xxxx.sh
在這裏插入圖片描述

第三步:運行

在這裏插入圖片描述

三種執行方式 (./xxx.sh bash xxx.sh . xxx.sh)

三種執行方式的不同點(./xxx.sh bash xxx.sh . xxx.sh)

./xxx.sh :先按照 文件中#!指定的解析器解析

如果#!指定指定的解析器不存在 纔會使用系統默認的解析器

bash xxx.sh:指明先用bash解析器解析

如果bash不存在 纔會使用默認解析器

. xxx.sh 直接使用默認解析器解析

三種執行情況:(重要)
在這裏插入圖片描述

注意:windows下 寫腳本 在linux下執行 注意

在這裏插入圖片描述
執行結果:
在這裏插入圖片描述
將windows文件 轉換成 unix文件
方法一:dos2unix 如果沒有該插件 需要安裝
sudo apt-get install dos2unix
dos2unix shell腳本
轉換成功就可以執行運行
方法二:
需要用vi打開腳本,在最後一行模式下執行
:set ff=unix
在這裏插入圖片描述

4、變量

定義變量
變量名=變量值
如:num=10
引用變量
$變量名
unset :清除變量值
在這裏插入圖片描述
運行結果:
在這裏插入圖片描述
從鍵盤獲取值read

在這裏插入圖片描述
運行結果:
在這裏插入圖片描述

案例:

在一行上顯示和添加提示 需要加上-p
在這裏插入圖片描述
運行結果:
在這裏插入圖片描述

案例:讀取多個值

在這裏插入圖片描述
運行結果:
在這裏插入圖片描述

案例只讀變量:

在這裏插入圖片描述
運行結果:
在這裏插入圖片描述

查看環境變量:env

在這裏插入圖片描述
在這裏插入圖片描述
導出環境變量(其他shell識別該變量)

source 腳本文件
source命令用法:
source FileName
作用:在當前bash環境下讀取並執行FileName中的命令。
注:該命令通常用命令“.”來替代。
如:source .bash_rc 與 . .bash_rc 是等效的。
注意:source命令與shell scripts的區別是,
source在當前bash環境下執行命令,而scripts是啓動一個子shell來執行命令。這樣如果把設置環境變量(或alias等等)的命令寫進scripts中,就只會影響子shell,無法改變當前的BASH,所以通過文件(命令列)設置環境變量時,要用source 命令。
在這裏插入圖片描述
在這裏插入圖片描述
可以在終端中讀取:
在這裏插入圖片描述
在其他sh腳本讀取:
在這裏插入圖片描述
運行結果:
在這裏插入圖片描述

注意事項:

1、變量名只能包含英文字母下劃線,不能以數字開頭
1_num=10 錯誤
num_1=20 正確
2、等號兩邊不能直接接空格符,若變量中本身就包含了空格,則整個字符串都要用雙引號、或單引號括起來
3、雙引號 單引號的區別
雙引號:可以解析變量的值
單引號:不能解析變量的值
在這裏插入圖片描述
運行結果:
在這裏插入圖片描述
如果想在PATH變量中 追加一個路徑寫法如下:(重要!!!!)

export PATH=$PATH:/需要添加的路徑

5、預設變量

shell直接提供無需定義的變量

在這裏插入圖片描述

案例:

在這裏插入圖片描述
運行結果:
在這裏插入圖片描述

腳本標量的特殊用法

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
加-e轉義 才起換行作用
在這裏插入圖片描述
()由子shell 完成
在這裏插入圖片描述
{}由當前的shell執行

在這裏插入圖片描述

6、變量的擴展

6.1、判斷變量是否存在

在這裏插入圖片描述
在這裏插入圖片描述

6.2、字符串的操作

在這裏插入圖片描述

7、條件測試

test命令:用於測試字符串、文件狀態和數字
test命令有兩種格式:
test condition 或[ condition ]
使用方括號時,要注意在條件兩邊加上空格。

7.1、文件測試

在這裏插入圖片描述
在這裏插入圖片描述

7.2、字符串測試

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

7.3、數值測試

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

7.4、符合語句測試

在這裏插入圖片描述
在這裏插入圖片描述

8、控制語句

在這裏插入圖片描述

8.1、if控制語句

格式一:
if [條件1]; then
    執行第一段程序
else
    執行第二段程序
fi
格式二:
if [條件1]; then
    執行第一段程序
elif [條件2];then
執行第二段程序
else
    執行第三段程序
fi

案例:

在這裏插入圖片描述

案例:判斷當前路徑下有沒有文件夾 有就進入創建文件 沒有 就創建文件夾 再進入創建文件

在這裏插入圖片描述
運行結果:
在這裏插入圖片描述

案例:

在這裏插入圖片描述
運行結果:
在這裏插入圖片描述

8.2、case

在這裏插入圖片描述
在這裏插入圖片描述

8.3、for循環語句

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

案例:

在這裏插入圖片描述

案例:掃描當前文件

在這裏插入圖片描述

8.4、while

在這裏插入圖片描述
在這裏插入圖片描述

8.5、until

在這裏插入圖片描述
在這裏插入圖片描述

8.6、break continue

在這裏插入圖片描述

9、函數

在這裏插入圖片描述
所有函數在使用前必須定義,必須將函數放在腳本開始部分,直至shell解釋器首次發現它時,纔可以使用
在這裏插入圖片描述

案例:求最值

在這裏插入圖片描述

案例:函數分文件

在這裏插入圖片描述
fun.sh
在這裏插入圖片描述
24_sh.sh
在這裏插入圖片描述

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