一.shell指令碼介紹
shell是什麼?
一門程式語言,用來解釋執行這門程式語言語法的直譯器
計算機體系結構:命令—>shell直譯器—>系統呼叫的介面—>核心—>計算機硬體
什麼是程式語言:人——————>程式語言——————>計算機
什麼是程式設計:人——————>程式語言——————>計算機(先幹什麼—>再幹什麼—>然後幹什麼)
什麼是程式:我們把計算機做事的步驟用程式語言翻譯下來,然後存放到檔案中,該檔案就是程式
執行shell指令碼
乙個shell指令碼執行的三個步驟:bash a.sh
1.先啟動bash直譯器
2.bash直譯器會把a.sh的內容從硬碟讀入記憶體
3.bash直譯器會識別剛剛讀入記憶體內容,解釋執行shell**
執行shell指令碼的兩種方式
方式1:
bash 指令碼的檔案路徑
方式2:
指令碼的檔案絕對路徑
./指令碼的檔案相對路徑
二.shell語法
1.變數
什麼是變數?
變:事物的狀態是可以變化的
量:記錄下事物的狀態
為何要有變數?
如何用變數?
使用原則:先定義後使用
定義變數:
height=190
age=18
name=egon
訪問變數:
echo $height
echo $
修改:height=200
變數的三大組成部分:
變數名:相當於門牌號,是用來訪問到變數值的
變數值:記錄的事物狀態,即存放到記憶體中的資料
變數名的命名:
前提:在見名知意的前提下,盡可能地精簡
規則:1.由字母數字下劃線組成:height_of_egon=190
2.不能以數字開頭
3.不能使用關鍵字
4.不要使用中文
變數值:
整型:年齡,等級,號碼
age=19
浮點型:薪資,身高,體重
salary=3.3
字串:描述性質的狀態,名字,性別,愛好,國籍
msg="hello world"
msg='hello world' # 硬引用
··反引號 # 取結果集,touch ·date +%f·.txt 或者 touch $(date +%f).txt
2.變數的作用域
變數的作用域就是變數的生效範圍
全域性作用域:在當前shell程序裡有效(首先vim b.sh;source b.sh表示b.sh在當前程序執行;bash b.sh表示開啟乙個新的子程序執行)
環境變數:path 在所有的程序有效
1).echo "export path=$path:/root" >> /etc/profile ——>建立新的命令,將命令的絕對路徑追加加到path變數後
2).path=$path:/root——>登入使用者首先執行bash程式,生效
export path——>遺傳給其它任何子shell
source /etc/profile——>手動生效
3.流程控制
1)if判斷
if 條件1;then
**1**2
**3elif 條件2;then
**1**2
**3else 條件1;then
**1**2
**3fi
單分支:
if 條件1;then
**1**2
**3fi
雙分支:
if 條件1;then
**1**2
**3else
**1**2
**3fi
#!bin/bash
echo "111"
echo "222"
if [ 10 -gt 30 ];then
echo "ok"
else
echo "no"
fiecho "333"
多分支:
#!/bin/bash
read -p "請輸入你的成績:" score
if [ $score -ge 90 ];then
echo "優秀"
elif [ $score -ge 80 ] && [ $score -lt 90 ];then
echo "良好"
elif [ $sore -ge 70 ] && [ $score -lt 60 ];then
echo "一般"
else
echo "很差"
fi2)迴圈
fi) & # ()括號括起來,&表示併發執行,速度快
done
5.#!/bin/bash
for i in
doping -c 1 192.168.182.$i &>/dev/null && echo "192.168.182.$i up" >>/tmp/ip1.log || echo "192.168.182.$i down" >>/tmp/ip1.log &
done
7 Shell指令碼程式設計高階
1 編寫指令碼實現傳入程序pid,檢視對應程序 proc下的cpu 記憶體指標。bin bash color red start 1 31m color red end 0m read p please input the pid to check cpu mem infomation pid ch...
Shell 學習7 Shell 特殊變數
前面已經講到,變數名只能包含數字 字母和下劃線,因為某些包含其他字元的變數有特殊含義,這樣的變數被稱為特殊變數。例如,表示當前shell程序的id,即pid,看下面的 echo 執行結果 29949特殊變數列表 0 當前指令碼的檔名 n 傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如...
shell 學習筆記7 shell 函式
把相同程式段定義成函式,可以減少整個程式的 量,提公升開發效率 增加程式的可讀性,易讀性,提公升管理效率 可以失效程式功能模組化,使程式具備可移植性 其實linux系統裡面近2000個命令可以說都是shell的函式 function 名稱 復合命令塊 重定向 function 函式名 1 開發乙個建...