目錄
一、shell簡(jiǎn)述
二、shell腳本
三、重定向
四、管道符
五、變量
六、shell腳本基本知識(shí)?
七、預(yù)定義變量小實(shí)驗(yàn)
?文章來源地址http://www.zghlxwxcb.cn/news/detail-458824.html
?
?
?
?
?
?
?
?
?
?
一、shell簡(jiǎn)述
概念:shell解釋器,翻譯官功能,與內(nèi)核進(jìn)行溝通的應(yīng)用程序。
把代碼翻譯為二進(jìn)制,讓內(nèi)核處理,負(fù)責(zé)接收用戶輸入的操作指令(命令)并進(jìn)行解釋,將需要執(zhí)行的操作傳遞給內(nèi)核執(zhí)行,并輸出執(zhí)行結(jié)果。
?
linux的shell:/etc/shells
用戶使用命令時(shí),系統(tǒng)會(huì)檢測(cè)這個(gè)文件得到內(nèi)容,命令在里面才可以使用相關(guān)命令。
bash(/bin/bash)是目前大多數(shù) Linux 版本采用的默認(rèn) Shell。
?
二、shell腳本
shell腳本文件格式:.sh
運(yùn)行shell腳本命令:1.sh first.sh
? 2.bash first.sh
3.source first.sh
4../first.sh(需要賦予權(quán)限)
?
腳本的優(yōu)點(diǎn):
1.自動(dòng)化運(yùn)維
2.批量化重復(fù)操作可以編寫腳本結(jié)合計(jì)劃任務(wù)自動(dòng)周期運(yùn)行
3.減輕管理員工作量
4.提高處理文本文件的速度
5.避免配置出錯(cuò)
?
shell腳本格式:
1.第一行默認(rèn):#!/bin/bash(不輸入也是可以,shell腳本默認(rèn)是有的)
2.注釋:shell腳本應(yīng)該有注釋
3.可執(zhí)行語(yǔ)句
shell腳本的運(yùn)算:
expr 可以一般用于整數(shù)值,也可用于字符串
運(yùn)算符:
1.加法 +
2.減法 -
3.乘法 \ *
4.除法 /(只會(huì)顯示整數(shù),除不盡為0)
5.取余 (取模)%
運(yùn)算法則:
1.加法: num1 + num2
2.減法:num1 - num2
3.乘法:num1 \ * num2
4.整除:num1 / num2
5.取余(求模):num1 % num2 (求 num1 除以 num2 的余數(shù))
?
三、重定向
1.< 重定向輸入(從直到文件輸入)
2.> 重定向輸出(直接覆蓋直到文件內(nèi)容)
3.>> 重定向輸出(直接將輸出內(nèi)容加入到直到文件尾部)
4.2> 重定向錯(cuò)誤輸出(將錯(cuò)誤信息保存到指定文件,覆蓋)
5.2>> 重定向錯(cuò)誤輸出(將錯(cuò)誤信息保存到指定文件)
6.&> 混合輸出(將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都保存到同一個(gè)文件)
例子演示:重定向輸出
?
重定向面試題:
如何在不刪除文件情況下,將文件清空:
?
四、管道符
| :主要用在處理文本上,將管道符號(hào)“|”左側(cè)的命令輸出的結(jié)果,作為右側(cè)命令的輸入(處理對(duì)象),同一行命令中可以使用多個(gè)管道。
例子演示:將test1用戶的密碼改為123456
?
五、變量
1.變量類型:1.字符串string(abc)
2.整型int(1,2)
3.浮點(diǎn)型(1.1)
4.布爾型(0,1)
2.變量命名規(guī)范:
1.不使用系統(tǒng)的命令作為變量名(例如:cd,ls)
2.不使用中文作為變量名
3.必要使用特殊符號(hào)。(下劃線除外)
4.要有注釋
?
3.自定義變量:由用戶自己定義、修改和使用
變量賦值:格式:變量名=變量值,變量命名規(guī)則:以字母或下劃線開頭,區(qū)分大小寫
? 4.引用變量:引用對(duì)應(yīng)的值,格式:前面加$表示引用變量
? 引用加雙引號(hào)表示弱引用,表示變量的值
引號(hào)加單引號(hào)表示強(qiáng)引用,表示變量本身,相當(dāng)于字符串
例子演示:
? 反撇號(hào)表示引用命令執(zhí)行結(jié)果,給變量賦值
?
5.全局變量
全局變量概念:在程序或腳本中定義的具有全局范圍的變量。
這意味著全局變量在整個(gè)程序或腳本的不同部分都是可見和可訪問的,而不僅限于特定的函數(shù)、方法或代碼塊。
?。?)臨時(shí)全局變量
export 變量名=變量值
例子:export a=1(所有登錄用戶可以使用)
?。?)永久全局變量
/etc/profile修改配置文件
?
?
?
?
優(yōu)點(diǎn):
1.全局范圍
2.持久性
3.共享性
副作用:
1.相同變量名,直接引用全局變量,會(huì)導(dǎo)致不確定性,一般使用局部變量
6.局部變量
局部變量概念:默認(rèn)情況下,新定義的變量只在當(dāng)前的Shell環(huán)境中有效,因此稱為局部變量。
當(dāng)進(jìn)入子程序或新的子Shell環(huán)境時(shí),局部變量將無法再使用。
可以通過內(nèi)部命令export將指定的變量導(dǎo)出為全局變量,使用戶定義的變量在所有的子Shell環(huán)境中能夠繼續(xù)使用。
?。?)臨時(shí)局部變量
a=1
(2)永久局部變量
.bash_profile
7.環(huán)境變量
查看環(huán)境變量:env
環(huán)境變量由系統(tǒng)提前創(chuàng)建,用來設(shè)置用戶的工作環(huán)境
PATH="$PATH:/root" #將/root目錄添加到搜索路徑
將root添加到全局變量后,系統(tǒng)可以第一時(shí)間匹配root的文件
?
?
?
例子演示:可以看到add.sh實(shí)在/root目錄下的文件,切換到/opt后無法運(yùn)行,但是將root目錄加入環(huán)境變量,就可以運(yùn)行
?
? 8.位置變量
是在運(yùn)行腳本或程序時(shí)傳遞給它們的值。位置變量用于將外部數(shù)據(jù)傳遞給腳本或程序,以便根據(jù)需要進(jìn)行處理。
?
?
?可以看到輸入9個(gè)數(shù),但num=第9為數(shù)和第2位置數(shù)相加
?
9.預(yù)定義變量
預(yù)定義變量:通常由編程語(yǔ)言或腳本解釋器提供,并根據(jù)需要自動(dòng)設(shè)置和更新,不能修改
$#:表示傳入多少個(gè)參數(shù)
$@:把各個(gè)參數(shù)加上雙引號(hào)分行處理,每個(gè)參數(shù)作為一個(gè)字符串返回
$*:把所有參數(shù)看成以空格分隔的一個(gè)字符串整體(單字符串)返回
$?:表示前一條命令或腳本執(zhí)行后的返回狀態(tài)碼,返回值為0表示執(zhí)行正確,返回任何非0值均表示執(zhí)行出現(xiàn)異常。
例子演示:
1.$#
?
? 2.$@加引號(hào),可以整行輸出
?
?
?
? 將引號(hào)取消,分行顯示:
?
?
3.$@和$*加雙引號(hào)表現(xiàn)一致
?
? 4.$?表現(xiàn)判讀是否成功
?
?六、shell腳本基本知識(shí)?
1.read -p 獲取輸入內(nèi)容
-p prompt:指定提示符,用于提示用戶輸入數(shù)據(jù)。
?
? 2.read -a 獲取輸入數(shù)組
-a array:將輸入數(shù)據(jù)存儲(chǔ)到一個(gè)數(shù)組中。
?
七、預(yù)定義變量小實(shí)驗(yàn)
1.判斷兩個(gè)數(shù)是否相等
? 1代表錯(cuò)誤
文章來源:http://www.zghlxwxcb.cn/news/detail-458824.html
?
到了這里,關(guān)于linux shell編程規(guī)范和變量的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!