shell指令碼的本質
—— shell指令碼語言是解釋型語言
—— shell指令碼的本質
shell命令的有序集合
shell程式設計的基本過程
基本過程分為三步:
1、建立shell檔案(以.sh結尾)
例:vi shell1.sh
date
2、賦予shell檔案執行許可權
用chmod命令修改許可權
chmod 740 shell1.sh
3、執行shell檔案
直接在命令列上呼叫shell程式
./shell1.sh
shell變數
——shell允許使用者建立變數儲存資料,但不支援資料型別(整型、字元、
浮點型),將任何賦給變數的值都解釋為一串字元
使用者自定義變數
—— 在shell程式設計中通常使用全大寫變數,方便識別
count=1
—— 變數的呼叫:在變數前加$
echo $count
—— linux shell/bash從右向左賦值
y=yx=$y
echo $x
y—— 使用unset命令刪除變數的賦值
z=hello
echo $z
hello
unset z
echo $z
沒有值位置變數
—— $0 與鍵入的命令列一樣,包含指令碼檔名
—— $# 包含命令列引數的個數
—— $@ 包含所有命令列引數
—— $? 包含前乙個命令的退出狀態
—— $* 包含所有命令列引數
—— $$ 包含正在執行程序的id號
環境變數
可通過export或env來檢視
常見環境變數
home:/ect/passwd檔案中列出的使用者主目錄
ifs:internal file separator,預設為空格,tab及換行符
path:shell搜尋路徑
ps1,ps2:預設提示符($)及換行提示符(>)
term:終端型別,常用的有vt100,ansi,vt200,xterm等
shell功能性語句
shell程式由零或多條shell語句構成。shell語句包括三類:說明性語句、
功能性語句和結構性語句。
—— 說明性語句:
以#號開始到結束,不被解釋執行
#!/bin/bash這句話告訴os用那種型別的shell來解釋執行該程式
—— 功能性語句:
任意的shell命令、使用者程式或其他shell程式
—— 結構性語句:
條件測試語句、多路分支語句、迴圈語句、迴圈控制語句等。
read語句
—— read var
echo $var
輸入什麼輸出什麼
expr命令(運算子兩邊要有空格)
—— 算術運算命令包括+、-、\*、/、%
expr 12 + 5 \* 3
27test語句(0為真)
—— test語句可測試三種物件:
字串 整數 檔案屬性
—— 每種測試物件都有若干測試操作符
—— 例如:
test "$answer" = "yes"
變數answer的值是否為字串yes
test -d tmp
測試tmp是否為乙個目錄名
test $num -eq 18
變數num的值是否為整數18
字串測試
s1 = s2 測試兩個字串的內容是否完全一樣
s1 != s2 測試兩個字串的內容是否有差異
-z s1 測試s1字串的長度是否為0
-n s1 測試s1字串的長度是否不為0
整數測試
a -eq b 測試a與b是否相等
a -ne b 測試a與b是否不相等
a -gt b 測試a是否大於b
a -ge b 測試a是否大於等於b
a -lt b 測試a是否小於b
a -le b 測試a是否小於等於b
檔案型別測試
-d name 測試name是否為乙個目錄
-e name 測試乙個檔案是否存在
-f name 測試name是否為普通檔案
-l name 測試name是否為符號鏈結
-r name 測試name檔案是否存在且為可讀
-w name 測試name檔案是否存在且為可寫
-x name 測試name檔案是否存在且為可執行
-s name 測試name檔案是否存在且長度不為0
f1 -nt f2 測試檔案f1是否比檔案f2更新
f1 -ot f2 測試檔案f1是否比檔案f2更舊
條件語句(0為真)
if...then...fi
語法結構
if 表示式
then 命令表
fi——如果表示式為真,則執行命令表中的命令;否則退出if語句,執行
fi後面的語句
—— if和fi是條件語句的語句括號,必須成對使用
—— 命令表中的命令可以是一條,也可以是若干條
例:if [ -f $1 ]
then
echo "file $1 exists"
fiif...then...else...fi
語法結構:
if 表示式
then 命令表1
else 命令表2
fi多路分支語句
case...esac
多路分支語句case用於多重條件測試,語法結構清晰自然,其語法為:
case 字串變數 in
模式1)
命令表1
;;模式2|模式3)
命令表2
;;......
模式n)
命令表n
;;esac
迴圈語句for
當迴圈次數已知或確定時,使用for迴圈語句來執行一條或一組命令。
格式為:
for 變數名 in 單詞表
do命令表
done
變數依次取單詞表中的各個單詞,每取一次單詞,就執行一次迴圈體中的
命令,迴圈次數由單詞表中的單詞數確定。命令表中的命令可以時一條,
也可以是由分號或換行符分開的多條。
迴圈語句while
語法結構:
while 命令或表示式
do 命令表
done
linux學習筆記之shell程式設計(指令碼)
bin bash 號表示注釋 shell指令碼從上往下依次執行 date grep root etc passwd 先加許可權 chmod x 1.sh或chmod 744 1.sh 輸入絕對路徑或相對路徑如.1.sh 表示當前目錄 bash 1.sh sh 1.sh source 1.sh 1.s...
shell指令碼學習筆記
學習筆記 1,檔案名字命名為 sh,字尾sh表明這是乙個bash指令碼檔案 2,shell指令碼的第一行如下 bin sh bin sh告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的shell程式 3,寫完指令碼後儲存檔案,然後將檔案變成可執行檔案 chmod x test.sh 4,以下是乙個...
Shell指令碼學習筆記
find 命令 1.基於檔名或者正規表示式搜尋 例子 匹配多個條件 find name txt o name pdf print 找到當前目錄中所有txt pdf檔案輸出 加 o 表示or條件 將中間部分視為乙個整體 find regex py sh regex 基於正規表示式匹配 2.基於目錄深度...