深入理解bash及字符串的處理
1、bash的內置變量:
PATH PS1 HOSTNAME UID HISTFILE HISTEILESIZE HISTCONTROL
$BASH:bash二進制程序文件的路徑
$BASH_SUBSHELL:子shell的層次
$BASH_VERSION
$EDITOR:默認編輯器
$EUID:有效的用戶ID
$UID:當前用戶的ID號
$FUNCNAME:當前函數的名稱
$GROUPS:當前用戶顯示的組
$HOME:當前用戶的家目錄
$HOSTTYPE:主機架構類型,用來識別系統硬件
$MACHTYPE:平臺類型,系統平臺依賴的編譯平臺
$OSTYPE:OS系統類型
$IFS:輸入數據時的字段分隔符,默認是空白符(空格、制表符、換行符)
$OLDPWD:上次使用的目錄
$PWD:當前目錄
$PPID:父進程
$PS1:主提示符
$PS2:第二提示符,主要用於補充完全命令輸入時的提示符
$PS3:第三提示符,用於select命令中
$PS4:第四提示符,當使用-X選項調用腳本時,顯示的提示符,默認為+號
$SECONDS:當前腳本已經運行的時長
$SHLVL:shell的級別。bash別嵌入的深度
2、特殊變量:
$0:腳本名稱自身
$1,$2。。。。:位置參數
$#:命令行參數個數
$*:所有的參數,被當作一個字符串
$@:所有的參數,每個參數都是一個獨立的字符串
$-:傳遞給腳本的標記
$!:運行於後臺的最後一個作業的PID
$_:上一條命令的最後一個參數的值
$?:上一條命令狀態的返回值
$$:腳本自身的PID
操作變量:
${#var} :返回變量中字符串的長度
${var}:變量引用
${var:-default}:如果var沒有聲明或者為空,則返回default字串,否則返回var自身的值
${var:+default}:如果var沒有聲明或者為空,則返回空字串,否則返回default的值
${var:=default}:如果var沒有聲明或者為空,則返回default字串,並且將default賦值給var,否則返回var自身的值
${var:?default}:如果var沒有聲明或者為空,則以default為錯誤信息返回,否則
zb 返回var自身的值
字串消除
${var#*word}:查找var中自左而右第一個被word匹配到的串,並將此串及向左的所有內容都刪除
${var##*word}:查找var中自左而右最後一次被word匹配到的串,並將此串及向左的所有內容都刪除
${var%word*}:查找var中自右而左第一個被word匹配到的串,並將此串及向右的所有內容都刪除
${var%%word*}:查找var中自右而左最後一次被word匹配到的串,並將此串及向右的所有內容都刪除
取字串:
${var:pos}:偏移pos個字符,取余下的字串
name=jerry,${name:2}結果為rry
${var:pos:num}偏移pos個字符,取num個字符長度的字串
name=‘hello world‘ ${name:2:5}結果為llo w
字串替換
${var/Pattern/Replaceplacement} :以Pattern為模式匹配var中的字串,將第一次匹配到的替換為Replaceplacement
${var// Pattern/Replaceplacement} :以Pattern為模式匹配var中的字串,將全部匹配到的替換為Replaceplacement6
聲明變量:
declare
-i:整形
-a:數值
-x:環境變量
-r:只讀變量,不能撤銷,不能修改,相當於readonly
-f:聲明函數
bash編程的信號捕獲(KILL無法捕捉)
trap 陷阱
#查看信號
kill -l
#使用方法,命令加信號
trap ‘command’ signal
信號捕捉用於:在中途中止時做一些清理操作
深入理解bash及字符串的處理