天天看點

17、内置變量、特殊變量、字元操作、聲明變量 學習筆記

1、bash的内置變量

$PATH            環境變量路徑

$HOSTNAME        系統主機名

$UID             系統目前使用者ID

$HISTFILE        曆史檔案存放路徑

$HISTSIZE        系統可以儲存的曆史記錄條目數

$HISTFILESIZE    曆史檔案可以儲存的曆史記錄條目數

$HISTCONTROL     曆史指令顯示控制

$BASH            bash二進制程式檔案的路徑

$BASH_SUBSHELL   子shell的層次

$BASH_VERSION    shell版本

$EDITOR          系統預設編輯器

$EUID            有效的使用者ID

$UID             使用者的ID号

$FUNCNAME        目前函數的名稱

$GROUPS          目前使用者所屬的組

$HOME            目前使用者的家目錄

$HOSTTYPE        主機類型,用來識别系統硬體是32位還是64位

$MACHTYPE        平台類型

$OSTYPEOS        類型

$OLDPWD          上次所在路徑

$PWD             目前路徑

$IFS             輸入資料時字段分隔符,預設為空白符(空格、制表符、換行符)

$PPID            父程序ID

$PS1             主提示符

$PS2             第二提示符,補充完全指令輸入時的提示符

$PS3             第三提示符,用于select指令中

$PS4             第四提示符,當使用-x選項調用腳本時,顯示的提示符,預設為+号

$SECONDS         目前腳本已經運作的時長

$SHLVL           shell級别,bash被嵌入的深度

2、特殊變量

$0                腳本名稱自身

$1, $2, ...       位置參數

$#                指令行參數個數

$*                所有的參數,被當作一個字元串

$@                所有的參數,每個參數都是一個獨立的字元串

$!                運作于背景的最後一個作業的PID

$_                上一條指令的最後一個參數的值

$?                上一條指令狀态傳回值

$$                腳本自身的PID

3、操作字元串

${variable}: 變量引用

${varible:-default}:如果variable沒有聲明或者為空,則傳回default字串,否則傳回variable自身的值

${varible:+default}:如果variable沒有聲明或者為空,則傳回空字串,否則傳回default

${varible:=default}:如果variable沒有聲明或者為空,則傳回default字串,并且将default指派給variable,否則傳回variable自身值

${varible:?default}:如果variable沒有聲明或者為空,則以default為錯誤資訊傳回,否則傳回variable自身的值

${#variable}: 傳回變量中字元串的長度

子串消除:

${varilable#*pattern}:  查找variable中自左而右第一次被pattern比對到的串,将此串及向左的所有内容都删除

${varilable##*pattern}: 查找variable中自左而右最後一次被pattern比對到的串,将此串及向左的所有内容都删除

${varilable%pattern*}:  查找variable中自右而左第一次被pattern比對到的串,将此串及向右的所有内容都删除

${varilable%%pattern*}: 查找variable中自右而左最後一次被pattern比對到的串,将此串及向右的所有内容都删除

取子串:

${variable:pos}:     取從pos+1開始往後的所有字元

${variable:pos:num}: 取從post+1開始往後的num個字元

子串替換

${variable/Pattern/Replacement}: 以Pattern為子產品比對variable中的字串,将第一次比對到的内容替換為Replacement

${variable//Pattern/Replacement}:以Pattern為子產品比對variable中的字串,将比對到的内容全部替換為Replacement

4、聲明變量:

declare

    -i: 整型

    -a: 數組

    -x: 環境變量

    -r: 隻讀變量,相當于readonly

    -f: 聲明函數

      本文轉自開源殿堂 51CTO部落格,原文連結:http://blog.51cto.com/kaiyuandiantang/1964719,如需轉載請自行聯系原作者