1. 程式人生 > >2.8-bash環境配置及腳本

2.8-bash環境配置及腳本

bash環境配置及腳本

bash的配置文件

按生效範圍劃分:存在兩類

全局配置:

/etc/profile

/etc/profile.d/*.sh

/etc/bashrc

個人配置:

~/.bash_profile

~/.bashrc


按功能劃分,存在兩類:

profile類:為交互式登錄的shell提供配置

全局:/etc/profile,/etc/profile.d/*.sh

個人:~/.bash_profile

功用:

1.用於定義環境變量

2.運行命令或腳本

bashrc類:為非交互式登錄的shell提供配置

全局:/etc/bashrc

個人:~/.bashrc

功用:

1.定義命令別名

2.定義本地變量


shell登錄:

交互式登錄:

1.直接通過終端輸入賬號密碼登錄

2.使用"su - username"或"su -l username"切換的用戶

讀取順序

/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登錄:

1.su username

2.圖形界面下打開的終端

3.執行腳本

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh


編輯配置文件定義的新配置的生效方式:

1.重新啟動shell進程

2.使用source或.命令進程

Note:使用source或.執行會有些副作用,比如設定在~/.bash_profile中的個人環境變量會重復賦值


bash中的算數運算

+,-,*,/,%,**......

# help let

實現算術運算:

1.let var=算式表達式

2.var=$[算術表達式]

3.var=$((算術表達式))

4.var=$(expr arg1 arg2...)

乘法符號須轉義 例如:mul=$(expr $num1 \* $num2)

bash有內建的隨機數生成器:$RANDOM(生成1-32767的隨機數)

增強型賦值:

+=,-=,*=,/=,%=

let varOPERvalue

例如:

count=$[$count+1]可以寫成let count+=1或count++

自增,自減

let var+=1

let var++

let var-=1

let var--


練習1:寫一個腳本

計算/etc/passwd文件中的第10個用戶和第20個用戶的ID之和

練習2:寫一個腳本

傳遞兩個文件路徑路徑作為參數給腳本,計算這兩個文件中所有空白行之和

練習3:統計/etc,/var,/usr目錄共有多少個一級子目錄和文件


條件測試:

判斷某需求是否滿足,需要由測試機制來實現:

Note:專用的測試表達式需要由測試命令輔助完成測試過程

測試命令:

test EXPRESSION

[ EXPRESSION ]

[[ EXPRESSION ]]

Note:EXPRESSION前後必須有空白字符

bash的測試類型:

數值測試:

-gt:是否大於

-ge:是否大於等於

-eq:是否等於

-ne:是否不等於

-lt:是否小於

-le:是否小於等於

字符串測試:

==/=:是否等於

>:是否大於

<:是否小於

!=:是否不等於

=~:左側的字符串是否能夠被右側的PATTERN所匹配到

Note:此表達式一般用於[[ ]]中

-z "STRING":測試字符串是否為空,空則為真,不空則為假

-n "STRING":測試字符串是否不空,不空為真,空則為假

Note:用於字符串比較時用到的字符串要使用引號


bash自定義退出狀態碼

exit [n]:自定義退出狀態碼

註意1:腳本中一旦遇到exit命令,腳本會立即終止,終止退出狀態取決於exit命令後面的數字

註意2:如果未給腳本指定退出狀態碼,整個腳本的退出狀態碼取決於腳本中執行的最後一條命令的狀態碼


練習:寫一個腳本

接受一個文件路徑作為參數:

如果參數個數小於1,則提示用戶“至少應該給一個參數”,並立即退出

如果參數不小於1,則顯示第一個參數所指向的文件的空白行數

2.8-bash環境配置及腳本