1. 程式人生 > >深入理解bash及字符串的處理

深入理解bash及字符串的處理

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及字符串的處理