bash 特性及bash腳本編程初步
終端,附著在終端的接口程序:
GUI:KDE,GNome,Xfce
CLI: /etc/shells
bash
zsh
fish
bash的特性:
命令行展開:~,{}
命令別名:alias, unalias
命令歷史:history
文件通配:glob
快捷鍵:Ctrl+a, u, k, l
命令補全:$PATH
路徑補全 :
bash特性之:命令 hash
緩存此前命令的查找結果:key-value
hash 命令
hash:l列出
hash: -d COMMAND:刪除
hash -r :清空
bash的特性之:變量
程序:指令+數據
指令:由程序文件提供:
數據:IO設備,文件,管道,變量
程序: 算法+數據結構
變量名+指向內存空間
變量賦值:name=value
48762047827
變量類型:存儲格式、表示格式范圍,參與運算
強類型變量
肉類型變量:
bash把所有變量統統是做字符型
bash中的變量了無需事先聲明:
變量替換:把變量名出現的位置替換為其所指向的內存空間中數據
變量引用:${var_name},$var_name
變量名:變量名只能包含字母,數字,下劃線,而且不能以數字開頭:
變量:見名知意,命名機制遵循某種法則:不能夠適應程序的保留字,例如if, else,then,while 等等
bash 變量類型:
本地變量: 作用領域僅為當前shell進程:
環境變量:作用領域為當前shell進程及其子進程:
局部變量:作用域僅為某代碼片段(函數上下文)
位置參數變量:當執行腳本的shell進程傳遞的參數;
特殊變量|:shell內置的有特殊功用的變量
$?:
0:成功
1-255:失敗
本地變量:
變量賦值:name=value
變量引用:${name},$name
" ":變量名會替換為其值
查看變量:set
撤銷變量:unset name
注意:此處非變量引用:
環境變量:
變量賦值:
(1)export name=value
(2) name=value
export name
(3)declare -x name=value
(4)name=value
declare -x name
變量引用: ${name}, $name
注意:bash 內嵌了許多環境變量(通常為全大寫字符),用于定義bash的工作環境
PATH, HISTFILE, HISTSIZE, HISTFILESIZE, HISTCONTROL, SHELL, HOME,UID, PWD, OLDPWD
查看環境變量:export,declare -x printenv, env
撤銷環境變量: unset name
只讀變量:
(1) declare -r name
(2) readonly name
只讀變量無法重新賦值,并且不支持撤銷:存活時間為當時shell進程的生命周期,隨shell進程進程終止而終止;
bash特性之多命令執行:
~]# COMMAND1; COMMAND2,COMMAND3;…
邏輯運算:
運算數:真(true, yes, on. 1)
假(false, no, off.0)
與
1&&1=1
1&&0=0
0&&1=0
0&&0=0
或:
1 || 1=1
1 || 0=1
0 || 1=0
0 || 0=0
非
! 1=0
?。埃剑?/p>
短路法則:
~]COMMAND1?。ΓΑ。茫希停停粒危?/p>
COMMAND1為假,則COMMAND2必須執行
~]#COMMAND1?。。茫希停停粒危模?/p>
?。茫希停停粒危模睘檎妫瑒tCOMMAND2不會執行
否則,COMMAND1 為假,則COMMAND2必須執行
示例:~]#?。椋洹 纾酰螅澹颍睿幔恚濉。。酰螅澹颍幔洌洹 纾酰螅澹颍睿幔恚?/p>
原創文章,作者:shadow,如若轉載,請注明出處:http://www.www58058.com/64525