一,指令碼格式要求
1,指令碼以#!/bin/bash開頭,指定解析方式
2,指令碼需要有可執行許可權
二,指令碼的常用執行方式
方式1(輸入指令碼的絕對路徑或相對路徑)
1》首先要賦予helloworld.sh指令碼的+x許可權 chmod 744 myshell.sh
2》執行指令碼 ./myshell.sh /opt/shellscript/myshell.sh
方式2(sh+指令碼)(不推薦)
不賦予指令碼+x許可權,直接執行即可 sh myshell.sh
三 shell變數
1:系統變數和使用者變數
2:顯示當前系統中所有變數: set
3:取出變數值 $
四 shell變數的定義
基本語法
1,定義變數 變數=值 a=100
2.撤銷變數 unset 變數 unset a
3 宣告靜態變數 readonly 變數,無法unset readonly a = 100
4 把變數公升級為全域性變數
五,定義變數的規則 等號兩側不能有空格
六,1,將命令的返回值賦給變數 a=`ls -la`反引號,執行裡面的命令並把值賦給變數a
2,$(ls -la)等價於反引號
七,設定環境變數(把變數公升級為全域性變數)
基本語法 1》export 變數名=變數值 (將shell變數輸出為環境變數)
2》source 檔案 讓修改後的資訊立即生效
3》echo $變數名(查詢環境變數的值)
八,位置引數變數(獲取執行指令碼使輸入的引數)
比如 ./myshell.sh 100 200 ,100 200 就是位置引數
基本語法 $n(n為數字,0代表命令本身,$1-$9代表第一至第九個引數,十及十以上的引數,十位以上的引數需要用大括號包含,如$ $* (這個變數代表命令列中所有的引數,$*代表把所有引數看成乙個整體)
$@ (代表命令列中所有引數,不過把每個引數區分對待)
$# (這個變數代表命令列中所有引數的個數)
九,預定義變數,可以直接在shell指令碼中使用
$$ (當前程序的程序號)
$! (後台執行的最後乙個程序的程序號)
$? (最後一次執行的命令的返回狀態。如果這個變數的值為0,證明上乙個命令正確執行,如果這個變數的值非0,則證明上乙個命令執行不正確)
十,shell運算子
基本語法:
1,"$((表示式))"或"$[表示式]"(第一中形式)
2,expr m + n(第二種形式)
3 expr m - n
4 expr \* ,/,% 乘 除 取餘
十一,條件判斷
基本語法
[ condition ](condition前後要有空格) 非空返回true 空返回false
常用判斷條件
兩個整數的比較
1)= 字串比較
-lt小於
-le 小於等於
-eq 等於
-gt 大於
-ge 等於等於
-ne 不等於
2)按照檔案許可權進行判斷
-r 有讀的許可權
-w 有寫的許可權
-x 有執行的許可權
3)按照檔案型別進行判斷
-f 檔案存在並且是乙個常規的檔案
-e 檔案存在
-d 檔案存在並且是乙個目錄
應用例項 /root/install.log檔案是否存在 判斷語句if[ -e /root/install.log ]
then echo "存在"
fi流程控制
if判斷
if[ condition ]then
elif[ condition2 ]then
ficase 語句
case $變數名 in
"值1")
"值2")
*)如果都不是,執行此語句
esac 反寫case結束
for迴圈
for 變數 in 值1 值2 值3 foreach迴圈 即將值乙個個取出賦給變數 可以用$@,$*是視為乙個整體,不行
do程式
done
for((初始值;迴圈控制條件;變數變化)
dodone
$*和$@在這裡非常有用
while迴圈
基本語法
while[ condition ]
do程式
done
read讀取控制台輸入
read [選項][引數] 變數
-p 指定讀取值時的提示符
-t 指定讀取值時等待的時間,過期不候
十二,函式
basename基本語法
功能:返回完整路徑的最後/的部分,常用於獲取檔名
basename[pathname][surffix] 如果surffix指定了,那麼basename就會去掉字尾
dirname[pathname]去掉檔名返回路徑、
自由義函式
基本語法
function funname(){
sum=$[$n1 + $n2]
return $sum;
呼叫直接寫函式名
funname 1 2
十三shell定時維護
1)每天凌晨2:00備份資料庫到atguigudb到/data/backup/db
2)備份開始和備份結束能給出相應的提示資訊
3)要求以備份時間為檔名,並打包成.tar.gz的形式
4)備份的同時檢查是否有十天前的資料庫檔案,如果有就刪除
Shell程式設計 shell特性
linux會預設記錄1000條歷史記錄,可通過 echo histsize 檢視,如果講histsize更改為2000,那麼會預設儲存2000條。1000條記錄儲存在家目錄的 bash history 中,僅當使用者正常退出當前shell時,當前shell中執行的命令才會儲存到 bash histo...
Shell程式設計 Shell函式
shell函式 1.將命令序列按格寫在一起 2.可方便重複使用命令序列 3.shell函式定義 function 函式名 4.呼叫函式的方法 函式名 引數1 引數2 5.shell函式應用示例 1 兩個數字求和 要求 通過sum 定義函式 兩個數求和 方法一 root localhost vim d...
Shell程式設計
1 建立指令碼 vi emacs等即可 bin sh 2 shell變數 對shell來講,所有的變數的取值都是乙個字串 shell是一種解釋性語言,變數無需事先定義 shell中的系統變數 程式命令列引數的數目 儲存前乙個命令的返回值 0 當前程式名 以 1 2 形式儲存所有輸入的命令列引數 以 ...