目錄 一、shell簡述 二、shell腳本 三、重定向 四、管道符 五、變數 六、shell腳本基本知識 七、預定義變數小實驗 一、shell簡述 概念:shell解釋器,翻譯官功能,與內核進行溝通的應用程式。 把代碼翻譯為二進位,讓內核處理,負責接收用戶輸入的操作指令(命令)併進行解釋,將需要執 ...
目錄
一、shell簡述
二、shell腳本
三、重定向
四、管道符
五、變數
六、shell腳本基本知識
七、預定義變數小實驗
一、shell簡述
概念:shell解釋器,翻譯官功能,與內核進行溝通的應用程式。
把代碼翻譯為二進位,讓內核處理,負責接收用戶輸入的操作指令(命令)併進行解釋,將需要執行的操作傳遞給內核執行,並輸出執行結果。
linux的shell:/etc/shells
用戶使用命令時,系統會檢測這個文件得到內容,命令在裡面才可以使用相關命令。
bash(/bin/bash)是目前大多數 Linux 版本採用的預設 Shell。
二、shell腳本
shell腳本文件格式:.sh
運行shell腳本命令:1.sh first.sh
2.bash first.sh
3.source first.sh
4../first.sh(需要賦予許可權)
腳本的優點:
1.自動化運維
2.批量化重覆操作可以編寫腳本結合計劃任務自動周期運行
3.減輕管理員工作量
4.提高處理文本文件的速度
5.避免配置出錯
shell腳本格式:
1.第一行預設:#!/bin/bash(不輸入也是可以,shell腳本預設是有的)
2.註釋:shell腳本應該有註釋
3.可執行語句
shell腳本的運算:
expr 可以一般用於整數值,也可用於字元串
運算符:
1.加法 +
2.減法 -
3.乘法 \ *
4.除法 /(只會顯示整數,除不盡為0)
5.取餘 (取模)%
運演算法則:
1.加法: num1 + num2
2.減法:num1 - num2
3.乘法:num1 \ * num2
4.整除:num1 / num2
5.取餘(求模):num1 % num2 (求 num1 除以 num2 的餘數)
例子演示:
三、重定向
1.< 重定向輸入(從直到文件輸入)
2.> 重定向輸出(直接覆蓋直到文件內容)
3.>> 重定向輸出(直接將輸出內容加入到直到文件尾部)
4.2> 重定向錯誤輸出(將錯誤信息保存到指定文件,覆蓋)
5.2>> 重定向錯誤輸出(將錯誤信息保存到指定文件)
6.&> 混合輸出(將標準輸出和錯誤輸出都保存到同一個文件)
例子演示:重定向輸出
重定向面試題:
如何在不刪除文件情況下,將文件清空:
四、管道符
| :主要用在處理文本上,將管道符號“|”左側的命令輸出的結果,作為右側命令的輸入(處理對象),同一行命令中可以使用多個管道。
例子演示:將test1用戶的密碼改為123456
五、變數
1.變數類型:1.字元串string(abc)
2.整型int(1,2)
3.浮點型(1.1)
4.布爾型(0,1)
2.變數命名規範:
1.不使用系統的命令作為變數名(例如:cd,ls)
2.不使用中文作為變數名
3.必要使用特殊符號。(下劃線除外)
4.要有註釋
3.自定義變數:由用戶自己定義、修改和使用
變數賦值:格式:變數名=變數值,變數命名規則:以字母或下劃線開頭,區分大小寫
4.引用變數:引用對應的值,格式:前面加$表示引用變數
引用加雙引號表示弱引用,表示變數的值
引號加單引號表示強引用,表示變數本身,相當於字元串
例子演示:
反撇號表示引用命令執行結果,給變數賦值
5.全局變數
全局變數概念:在程式或腳本中定義的具有全局範圍的變數。
這意味著全局變數在整個程式或腳本的不同部分都是可見和可訪問的,而不僅限於特定的函數、方法或代碼塊。
(1)臨時全局變數
export 變數名=變數值
例子:export a=1(所有登錄用戶可以使用)
(2)永久全局變數
/etc/profile修改配置文件
優點:
1.全局範圍
2.持久性
3.共用性
副作用:
1.相同變數名,直接引用全局變數,會導致不確定性,一般使用局部變數
6.局部變數
局部變數概念:預設情況下,新定義的變數只在當前的Shell環境中有效,因此稱為局部變數。
當進入子程式或新的子Shell環境時,局部變數將無法再使用。
可以通過內部命令export將指定的變數導出為全局變數,使用戶定義的變數在所有的子Shell環境中能夠繼續使用。
(1)臨時局部變數
a=1
(2)永久局部變數
.bash_profile
7.環境變數
查看環境變數:env
環境變數由系統提前創建,用來設置用戶的工作環境
PATH="$PATH:/root" #將/root目錄添加到搜索路徑
將root添加到全局變數後,系統可以第一時間匹配root的文件
例子演示:可以看到add.sh實在/root目錄下的文件,切換到/opt後無法運行,但是將root目錄加入環境變數,就可以運行
8.位置變數
是在運行腳本或程式時傳遞給它們的值。位置變數用於將外部數據傳遞給腳本或程式,以便根據需要進行處理。
可以看到輸入9個數,但num=第9為數和第2位置數相加
9.預定義變數
預定義變數:通常由編程語言或腳本解釋器提供,並根據需要自動設置和更新,不能修改
$#:表示傳入多少個參數
$@:把各個參數加上雙引號分行處理,每個參數作為一個字元串返回
$*:把所有參數看成以空格分隔的一個字元串整體(單字元串)返回
$?:表示前一條命令或腳本執行後的返回狀態碼,返回值為0表示執行正確,返回任何非0值均表示執行出現異常。
例子演示:
1.$#
2.$@加引號,可以整行輸出
將引號取消,分行顯示:
3.$@和$*加雙引號表現一致
4.$?表現判讀是否成功
六、shell腳本基本知識
1.read -p 獲取輸入內容
-p prompt:指定提示符,用於提示用戶輸入數據。
2.read -a 獲取輸入數組
-a array:將輸入數據存儲到一個數組中。
七、預定義變數小實驗
1.判斷兩個數是否相等
1代表錯誤