[Linux]Shell的運算符和特殊變量


說起Shell腳本,免不了用變量。特別是對於這種一堆符號表示變量的語言來說,你不了解一下相關變量的本意,根本無從下手。譬如寫個循環遍歷,$#就起了好大作用。所以還是有必要記錄一下,也是對學習的一個筆記,方便以后查找。

另外有一些運算符也相當有意思。

 

//---------------------分割線,下文為筆記內容-------------------------

變量相關的命令
export, readonly
export:用於修改或打印變量
readonly:設置變量為只讀
 
替換運算符
${var: -word}       如果var存在且非null,返回它的值;否則返回word
${var: =word}    如果var存在且非null,返回它的值;否則將word賦值給var,並返回var的值 
${var: ?word}     如果var存在且非null,返回它的值;否則顯示var:word
${var: +word}       如果var存在且非null,返回word;否則返回null
 
注:冒號(:)可省略
 
模式匹配運算符
${var#pattern}     匹配前綴(最小匹配),並返回余下內容
${var##pattern}      匹配前綴(最大匹配),並返回余下內容
${var%pattern}      匹配結尾(最小匹配),並返回余下內容
${var%%pattern}      匹配結尾(最大匹配),並返回余下內容
 
注:pattern為正則表達式匹配
 
算術運算符
Shell的算術運算符基本上與C一致,就不多說了。
算術運算符可以放置在$((...))里面,也就是內嵌算術,也稱為算術展開。譬如 echo $((2>1)) 打印結果為1。(1表示真,0表示假)
 
特殊變量
$#     表示變量的個數,常用於循環
$@     當前命令行所有參數。置於雙引號中,表示個別參數
$*     當前命令行所有參數。置於雙引號中,表示將命令行所有參數當初一個單獨參數
$-(連字號)     在引用數給予Shell的選項
$?     表示上一個命令退出的狀態
$$     表示當前進程編號
$0     表示當前程序名稱
$!     表示最近一個后台命令的進程編號
$HOME     表示當前用戶根目錄
$IFS     表示內部的字段分隔符
$LANG     當前locale默認名稱
$PATH     環境變量
$PPID     父進程編號
$PWD     當前工作目錄
 
$?的參考值
0     成功退出
>0     退出失敗
1-125     命令退出失敗,失敗返回的相關值由程序定義(譬如,程序內退出只執行 exit 2,則返回為2)
126     命令找到了,但無法執行
127     命令找不到
>128     命令因受到信號而死亡

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM