欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

shell編程規(guī)范與變量詳解

 更新時(shí)間:2025年05月17日 08:44:46   作者:阿薩德791  
這篇文章主要介紹了shell編程規(guī)范與變量的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

shell腳本概述

shell可以批量處理,自動(dòng)化完成一系列維護(hù)任務(wù),避免大量重復(fù)性輸入,交互操作等。

shell作用

shell是一個(gè)特殊的應(yīng)用程序(在linux中),介于操作系統(tǒng)內(nèi)核與用戶之間,擔(dān)任’命令解釋器‘的角色,主要負(fù)責(zé)用戶輸入命令(解釋),將需進(jìn)行的操作傳遞給內(nèi)核(輸出結(jié)果)。

shell解釋器有很多種,使用不同的shell時(shí),其內(nèi)部的指令,特殊符號(hào)會(huì)有區(qū)別。

編寫第一個(gè)shell腳本

bash是目前使用最多(linux默認(rèn))的shell。shell腳本將要執(zhí)行的命令放入一個(gè)腳本中,賦予其權(quán)限即可。

執(zhí)行vim aaa.sh構(gòu)建并編輯腳本

如要執(zhí)行./aaa.sh需賦予權(quán)限。(bash ,source則無需)

執(zhí)行腳本

重定向與管道操作

shell腳本具有批量處理的特性,大部分指令都是默認(rèn)進(jìn)行,因此提取,過濾執(zhí)行信息非常重要。

重定向操作

linux系統(tǒng)使用文件來描述硬件設(shè)備等資源(硬板,分區(qū)等設(shè)備文件),用戶提供操作系統(tǒng)處理的信息過程中,主要包括3類交互設(shè)備文件。

默認(rèn)設(shè)備文件編號(hào)
標(biāo)準(zhǔn)輸入鍵盤0命令將從標(biāo)準(zhǔn)輸入文件中讀取在執(zhí)行過程中需要輸入的數(shù)據(jù)。
標(biāo)準(zhǔn)輸出顯示器1命令將執(zhí)行后的輸出結(jié)果發(fā)送到輸出文件
標(biāo)準(zhǔn)錯(cuò)誤顯示器2命令將執(zhí)行時(shí)的各種錯(cuò)誤信息發(fā)送到標(biāo)準(zhǔn)錯(cuò)誤文件

重定向輸出

是指將命令的正常輸出結(jié)果保存到指定文件中(不顯示在顯示的屏幕上)(>/>>用于覆蓋和追加文件)。

重定向輸入

指將命令在接收接受的途徑由默認(rèn)改成指定文件,不等待從鍵盤輸入。

交互式操作過程可以通過重定向輸入以讀取文件的方式來完成。

執(zhí)行添加初始密碼串“123456”

非交互式命令語句可以更方便的在Shell腳本中使用,從而大大減少程序被打斷的過程,提高腳本執(zhí)行的效率。

錯(cuò)誤重定向

將執(zhí)行命令時(shí)的錯(cuò)誤信息保存到指定文件上而不是屏幕上。

管道操作

管道操作為不同命令之間提供了一種機(jī)制。位于|左側(cè)命令作為輸出結(jié)果,將右側(cè)命令作為輸入(處理對(duì)象),一行命令可以有多個(gè)|符。

shell變量作用,類型

shell變量用來存放系統(tǒng)和用戶需要使用的特定參數(shù),這些參數(shù)可以根據(jù)用戶的設(shè)定或系統(tǒng)變化而相應(yīng)變化,shell程序能夠提供更加靈活功能,適應(yīng)性更強(qiáng)。

自定義變量

自定義變量是由系統(tǒng)用戶自己定義的變量,只在用戶自己的Shell環(huán)境中有效,因此又稱為本地變量。

定義新變量

bash中變量相對(duì)簡單沒有那么復(fù)雜,在定義一個(gè)新變量時(shí),一般無需提前聲明,直接指定變量名稱給初始值即可(內(nèi)容)。

查看引用變量值

在變量前加$可以引用一個(gè)變量值,使用echo查看變量,一條命令可以使用echo查看多個(gè)變量值。

當(dāng)變量名稱和緊跟其他的其他字符混淆時(shí),使用{}將其隔開,否則將無法確定正確的變量名稱。

變量賦值特殊操作

雙引號(hào)(")

雙引號(hào)起界定字符串的作用,特別是當(dāng)賦值內(nèi)容包括空格時(shí),必須用"括起來,其他情況下"可以省略。

在"范圍內(nèi)使用$可以引用其他變量值(變量引用),從而能夠直接調(diào)用現(xiàn)有變量的值給新的變量。

單引號(hào)(‘)

當(dāng)賦值包括/$等特殊符號(hào)時(shí),應(yīng)用單引號(hào)括起來。在單引號(hào)范圍內(nèi)任何字符都將被當(dāng)作普通字符看待,而且無法引用其他變量的值。

反撇號(hào)(`)

主要用于命令替換,允許將執(zhí)行某個(gè)命令的屏幕輸出結(jié)果賦值給變量。`號(hào)內(nèi)必須是可以執(zhí)行的命令,不然將會(huì)出錯(cuò)。

使用反撇號(hào)難以在一行命令中實(shí)現(xiàn)嵌套命令替換操作,這時(shí)可以己使用"$()"來代替`號(hào)操作,以解決嵌套的問題。

read命令

bash內(nèi)置命令可以使用read來變量賦值。read命令用來提示用戶輸入信息,從而實(shí)現(xiàn)簡單的交互過程。

[root@localhost~]# read ToDir1
/opt/backup/
[root@localhost ~]# echo $ToDir1
/opt/backup/

以便使交互式操作界面更加友好,提高易用性,read命令可以結(jié)合"-p'選項(xiàng)來設(shè)置提示信息,以便告知用戶應(yīng)該輸入什么內(nèi)容等相關(guān)事項(xiàng)。

[root@localhost~]#read-p"請指定備份存放目錄:"ToDir22
請指定備份存放目錄:/opt/backup
[root@localhost ~]#_echo $ToDir2
/opt/backup

設(shè)置變量作用范圍

默認(rèn)情況下,新定義的變量只在當(dāng)前的Shell環(huán)境中有效,因此稱為局部變量。當(dāng)進(jìn)入子程序或新的子shell環(huán)境式,局部將無法再使用。

為了使用戶定義的變量在所有的子Shell環(huán)境中能夠繼續(xù)使用,減少重復(fù)設(shè)置工作,可以通過內(nèi)部,命令export將指定的變量導(dǎo)出為全局變量。

使用export導(dǎo)出全局變量的同時(shí),也可以為變量進(jìn)行賦值,這樣在新定義全局變量時(shí)就不需要提前進(jìn)行賦值了。

數(shù)值變量運(yùn)算

Shell變量的數(shù)值運(yùn)算多用于腳本程序的過程控制。

  • +加法運(yùn)算。
  • -:減法運(yùn)算。
  • \*:乘法運(yùn)算,注意不能僅使用"*"符號(hào),否則將被當(dāng)成文文件通配符
  • /:除法運(yùn)算。
  • %:求模運(yùn)算,又稱為取余運(yùn)算,用來計(jì)算數(shù)值相除后的余數(shù)。

若要將運(yùn)算結(jié)果賦值給其他變量,可以結(jié)合命令替換操作(使用反撇號(hào))。

特殊shell設(shè)置

除了用戶自行定義的Shell變量以外,在Linux系統(tǒng)和Bash Shell環(huán)境中還有一系列的特殊變量:環(huán)境變量,只讀變量,位置變量,預(yù)定義變量。

環(huán)境變量

環(huán)境變量指的是出于運(yùn)行需要而由Linux系統(tǒng)提前創(chuàng)建的一類變量,主要用于設(shè)置用戶的工作環(huán)境,,包括用戶宿主目錄,命令查找路徑,用戶當(dāng)前目錄,登錄終端等。

PATH變量用于設(shè)置可執(zhí)行程序的默認(rèn)搜索路徑,當(dāng)僅指定文件名稱來執(zhí)行命令程序時(shí),Linux系統(tǒng)

將在PATH變量指定的目錄范圍查找對(duì)應(yīng)的可執(zhí)行文件,如果找不到則會(huì)提示"command not found"

[root@localhost ~]# ls -lh /root/first.sh
-rwxr-xr-x. 1 root root 27 Jul 4 09:24 /root/first.sh
[root@localhost ~]# echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bi
n:/root/bin
[root@localhost ~]#first.sh
-bash: first.sh: command not found
[root@localhost ~]#_PATH="$PATH:/root" 
[root@localhost ~]# echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/birh:/root/bin:/usr/local/mysql/bi
n:/root/bin:/root
[root@localhost~]#first.sh//直接以文件名運(yùn)行腳本
當(dāng)前的目錄位于:
/boot
其中以vml開頭的文件包括:-rwxr-xr-x.1root5.2M Apr 12 13:20
vmlinuz-0-rescue-b15df1eb8205483f9f70c779709810abc
-rwxr-xr-x. 1 root root 5.2M Nov 22 2016 vmlinuz-3.10.0-514.el7.x86_64

只讀變量

Shell變量中有一種特殊情況,一經(jīng)設(shè)定,其值是不可改變的,這種變量被稱為只讀變量。

位置變量

為了在使用Shell腳本程序時(shí),方便通過命令行,為程序提供操作參數(shù),Bash引入了位置變量的概念。

執(zhí)行vim adder2num.sh

[root@localhost ~]# ./adder2num.sh 12 34
12 + 34=46

[root@localhost ~]# ./adder2num.sh 56 78
56 + 78 =134

預(yù)定義變量

預(yù)定義變量是由Bash程序預(yù)先定義好的一類特殊變量,用戶只能使用預(yù)定義變量,而不能創(chuàng)建新的預(yù)定義變量。

  • $#:表示命令行中位置參數(shù)的個(gè)數(shù)。
  • $*:表示所有位置參數(shù)的內(nèi)容。
  • $?:表示前一條命令執(zhí)行后的返回狀態(tài),返回值為0表示執(zhí)行正確,返回任何非0值均表示執(zhí)行出現(xiàn)異常。
  • $0:表示當(dāng)前執(zhí)行的腳本或程序的名稱。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論