**技能展示
1.掌握shell指令碼的基礎知識
2.學會使用shell變數
3.學會編寫簡單的shell指令碼 **
shell的作用
1.shell的作用 —— 命令直譯器,「翻譯官」
介於系統核心與使用者之間,負責解釋命令列
2.使用者的登入shell
登入後預設使用的shell程式,一般為 /bin/bash
不同shell的內部指令、執行環境等會有所區別
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
編寫第乙個shell指令碼
1.編寫指令碼**
使用vi文字編輯器
每行一條linux命令,按執行順序依次編寫
[root@localhost ~]# vi first.sh
cd /boot/
pwdls -lh vml*
2.賦予可執行許可權
使指令碼具有可執行屬性
[root@localhost ~]# chmod +x first.sh
必須有 x 許可權
[root@localhost ~]# ./first.sh
不要求 x 許可權
[root@localhost ~]# sh /first.sh
[root@localhost ~]# source /first.sh
4.更完善的指令碼構成
指令碼宣告 第1行 宣告指令碼執行的環境
注釋資訊 以『#』開頭的行為注釋行
可執行語句
[root@localhost ~]# vi /first.sh
重定向與管道操作
1.互動式硬體裝置
標準輸入:從該裝置接收使用者輸入的資料
標準輸出:通過該裝置向使用者輸出資料
標準錯誤:通過該裝置報告執行出錯資訊
【型別】【裝置檔案】【檔案描述編號】【預設裝置】
標準輸入;/dev/stdin ;0 ;鍵盤
標準輸出;/dev/stdout; 1 ;顯示器
標準錯誤輸出;/dev/stderr; 2;顯示器
2.重定向操作
【型別】【操作符】【用途】
重定向輸入 ; < ; 從指定的檔案讀取資料,而不是從鍵盤輸入
重定向輸出; > ;將輸出結果儲存到指定的檔案(覆蓋原檔案)
重定向輸出;>>; 將輸出結果追加到指定的檔案
標準錯誤輸出;2> ;將錯誤資訊儲存到指定的檔案(覆蓋原檔案)
標準錯誤輸出;2>>; 將錯誤資訊追加到指定的檔案中
混合輸出;&> ; 將標準輸出、標準錯誤的內容儲存到同乙個檔案中
3.管道操作符號「|」
將左側的命令輸出結果,作為右側命令的處理物件
格式:cmd1 | cmd2 [… | cmdn]
[root@localhost ~]# grep 「bashkatex parse error: expected 'eof', got '#' at position 144: …ot@localhost ~]#̲ grep 「bash」 /etc/passwd | awk -f: 『』
root /bin/bash
teacher /bin/bash
shell變數的作用、型別
1.變數的作用
為靈活管理linux系統提供特定引數,有兩層意思:
變數名:使用固定的名稱,由系統預設或使用者定義
變數值:能夠根據使用者設定、系統環境的變化而變化
2.變數的型別
自定義變數:由使用者自己定義、修改和使用
環境變數:由系統維護,用於設定工作環境
位置變數:通過命令列給指令碼程式傳遞引數
預定義變數:bash中內建的一類變數,不能直接修改
自定義變數
1.定義乙個新的變數
格式:變數名=變數值
變數名以字母或下劃線開頭,區分大小寫,建議全大寫
2.檢視變數的值
格式:echo $變數名
[root@localhost ~]# product=benet
[root@localhost ~]# version=4.0
[root@localhost ~]# echo $product
benet
[root@localhost ~]# echo $product $version
benet 4.0
當變數名稱容易和緊跟其後的其他字元混淆時,需要使用{} 將變數名稱括起來
3.賦值時使用引號
雙引號:允許通過$符號引用其他變數值
單引號:禁止引用其他變數值,$視為普通字元
反撇號:命令替換,提取命令執行後的輸出結果
或者可以 $() 替代—多用,可以處理巢狀命令
4.從鍵盤輸入內容為變數賦值
格式: read [-p 「提示資訊」] 變數名
5.設定變數的作用範圍
區域性變數與全域性變數
區域性變數:只在當前shell環境中有效
全域性變數:在所有shell環境中有效
格式1:export 變數名 …
格式2: export 變數名=變數值 …
—— 兩種格式可以混合使用
[root@localhost ~]# echo 「$product $version」
benet 4.0
匯出為全域性變數
[root@localhost ~]# export product version
[root@localhost ~]# bash
子程式引用全域性變數
[root@localhost ~]# echo 「$product $version」
benet 4.0
[root@localhost ~]# exit
6.整數變數的運算
格式:expr 變數1 運算子 變數2 [運算子 變數3] …
7.常用運算子
加法運算:+
減法運算: -
乘法運算: *
除法運算: /
求模(取餘)運算: %
$() — 命令巢狀``
${} ----- 解決變數名混淆問題
$(()) — 實現整數的混合運算
特殊的shell變數
1.環境變數
由系統提前建立,用來設定使用者的工作環境
配置檔案: /etc/profile、~/.bash_profile
檢視當前環境變數
2.常見的環境變數:
pwd、path
user 、shell、home
[root@localhost ~]# echo katex parse error: expected 'eof', got '#' at position 119: …ot@localhost ~]#̲ path="path:/root"
[root@localhost ~]# echo $path
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:
/usr/bin:/root/bin:/root
2.位置變數
表示為 $n,n為1~9之間的數字
[root@localhost ~]# ./myprog.sh one two three four five six
$1,第1個位置引數
$2,第2個位置引數
$6,第6個位置引數
3.預定義變數
$#:命令列中位置變數的個數
$:所有位置變數的內容
$?:上一條命令執行後返回的狀態,當返回狀態值為0時表示執行正常,非0值表示執行異常或出錯
$0:當前執行的程序/程式名
[root@localhost ~]# cat mybak.sh
!/bin/bash
tarfile=beifen-date +%f
.tgz
tar zcf $tarfile $ &> /dev/null
echo 「已執行 $0 指令碼,」
echo 「共完成 $# 個物件的備份」
echo 「具體內容包括: $*」
[root@localhost ~]# ./mybak.sh /etc/passwd /etc/shadow
已執行 ./mybak.sh 指令碼,
共完成 2 個物件的備份
具體包括:/etc/passwd /etc/shadow
shell 第六章 陣列應用
第六章 shell陣列應用 1.陣列基本概述 2.陣列基本使用 3.陣列遍歷與迴圈 01.什麼是陣列?陣列其實也算是變數,傳統的變數只能儲存乙個值,但陣列可以儲存多個值。02.陣列的分類 shell陣列分為普通陣列和關聯陣列。普通陣列 只能使用整數作為陣列索引。關聯陣列 可以使用字串作為陣列索引。0...
mysql第六章 第六章 mysql日誌
第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...
第六章 指標
1.多位元組資料的位址是在最左邊還是最右邊的位置,不同的機器有不同的規定,這也正是大端和小端的區別,位址也要遵從邊界對齊 2.高階語言的乙個特性就是通過名字而不是位址來訪問記憶體的位置,但是硬體仍然通過位址訪問記憶體位置 3.記憶體中的變數都是義序列的0或1的位,他們可以被解釋為整數或者其他,這取決...