# Linux 之 shell 編程學習筆記(並不完全正確,有誤請指正) ## 概念性知識點 ### 腳本概念 >**腳本(Script),是使用一種特定的描述性語言,依據一定的格式編寫的 可執行文件** ### 運行腳本要求 >**腳本須有 ==可執行== 許可權,即 ==x== 許可權** > >* ...
Linux 之 shell 編程學習筆記(並不完全正確,有誤請指正)
概念性知識點
腳本概念
腳本(Script),是使用一種特定的描述性語言,依據一定的格式編寫的 可執行文件
運行腳本要求
腳本須有 可執行 許可權,即 x 許可權
內容格式:以
#!/bin/bash
開頭
腳本的執行方式
法一(需可執行許可權)
賦予腳本可執行許可權:
chmod u+x [腳本]
在 有可執行許可權 的前提下,使用
./[腳本]
或 直接輸入腳本的絕對路徑[絕對路徑]
即可運行腳本
法二(無需可執行許可權)
直接使用
sh [腳本]
命令運行腳本
shell 編程知識點
shell 的變數
Linux shell 的變數分為 系統變數 和 用戶變數
常見系統變數:\$HOME 、\$PWD 、\$PATH 、\$USER 、$SHELL 等
常用命令
set 查看當前shell中所有變數 unset [變數] 撤銷變數 echo $[變數] 查詢變數的值
基本規則
與其他語言規則大同小異
註意:等號兩側 不能有空格
變數名一般習慣為大寫(約定俗成)
基本語法
1. 定義變數:
[變數名]=[值]
(中間不能有空格)2. 撤銷變數:
unset [變數]
3. 定義靜態變數:
readonly [變數名]=[值]
(靜態變數不能被撤銷,即不能被 unset )4. 將命令的結果賦給變數:[變數名]=`[命令]` 或
[變數名]=$([命令])
(第一種寫法中 ` 號為 tab 鍵上面的鍵5. 輸出變數時帶上 $ 符號,即
echo $[變數]
位置參數變數
例如:
傳參,輸出:
預定義變數
例如:
註意:第二行 & 符號表示 以後臺方式運行
輸出:
shell 的多行註釋
格式
:<<![內容]!
shell 的運算符
shell 運算的三種方法
法一(不好用)
[變數]=$(([表達式]))
法二(好用)
[變數]=$[[表達式]]
法三(難用)
[變數]=`expr[簡單表達式]`
!!!註意:` 號為反引號
數字與符號 間有空格
* 號前必須帶轉義字元 \
shell 的條件判斷
判斷語句
[ condition ]
// 非空 返回 true ,空 返回 false可用
echo $?
查詢上一條判斷是否執行成功( 0 為 true ,>1 為 false )註意:condition 前後有 空格
三元運算符
[ condition ] && [語句1] || [語句2]
若 condition 滿足,則執行語句1
兩個整數之間比較
= 字元串比較
-lt 小於(less than)
-le 小於等於(less equal)
-eq 等於(equal)
-gt 大於(greater than)
-ge 大於等於(greater equal)
-ne 不等於(Not equal)
按照文件許可權進行判斷
-r 有讀的許可權(read)
-w 有寫的許可權(write)
-x 有執行的許可權(execute)
按照文件類型進行判斷
-f 文件存在並且是一個常規的文件(file)
-e 文件存在(existence)
-d 文件存在並是一個目錄(directory)
shell 的流程式控制制
if條件判斷
!!!註意:condition 前後必須有 空格,即使沒有 condition 也要有空格
基本語法
單分支
#單分支
if [ condition ]
then
[符合該條件執行的語句]
fi
例如:
多分支
#多分支
if [ condition ]
then
[符合該條件執行的語句]
elif [ condition ]
then
[符合該條件執行的語句]
else
[符合該條件執行的語句]
fi
例如:
case選擇語句
基本語法
case $1 in
"[條件]")
[符合該條件執行的語句]
;; // ;; 符號代表 結束
"[條件]")
[符合該條件執行的語句]
*) //如果沒有符合上麵條件的值,則執行這段代碼
[符合該條件執行的語句]
esac
例如:
輸出:
for 迴圈
基本語法1
for [變數] in [值]
do
[代碼塊]
done
例如:
基本語法2
for (([初始值];[迴圈控制條件];[變數的變化]))
do
[代碼塊]
done
例如:
while 迴圈
基本語法
while [ 條件 ] //註意 條件 前後有空格
do
[代碼塊]
done
例如:
read 讀取控制台的輸入
基本語法
read -p "[提示語]" 指定輸入時的提示語 read -t [秒] 指定輸入的等待時間
例如:
shell 的函數
系統函數
basename 基本語法
basename [文件路徑] 獲取文件名 basename [文件路徑] [尾碼] 獲取文件名(不帶尾碼)
例如:
dirname 基本語法
dirname [文件絕對路徑] 獲取文件的路徑
例如:
自定義函數
基本語法
function [函數名]{
[代碼塊]
}
例如:
函數調用
[函數名] [參數]
例如: