截取要求中的「最左」與「最右」
注意:pattern只能是從最左開始匹配,若是不包含第一個字符,那麼就不能工做。
${variable#pattern} - 截去從最左開始匹配的最短符合pattern的子串
${variable##pattern} - 截去從最左開始匹配的最長符合pattern的子串html
${variable%pattern} - 截去從最右開始匹配的最長符合pattern的子串
${variable%%pattern} - 截去從最右開始匹配的最長符合pattern的子串linux
例如:
variable="Now is the time"
echo ${variable} // 打印出 Now is the time
echo ${variable#N*i} // 打印出 s the time
echo ${variable##N*i} // 打印出 me
echo ${variable%time} // 打印出 Now is the
echo ${variable%%t*e} // 打印出 Now isshell
語法:${variable:offset:length}
例如:
var="hello"
var=${var:3:2}
echo $var //打印出 "lo"編程
【SHELL特殊的元字符】
*(pattern1|pattern2) 0次或者屢次觸發
例如,*([0-9]) 0個或者多個數字
?(pattern1|pattern2) 0次或者1次觸發
例如,?([0-9]) 0個或者1個數字
+(pattern1|pattern2) 1次或者屢次觸發
@(pattern1|pattern2) 僅僅1次觸發
!(pattern1|pattern2) 1次都不觸發
例如,!(err*|fail*)表示,不能以「err」或者"fail"開頭的詞vim
【保留變量】安全
$IFS 這個變量中保存了用於分割輸入參數的分割字符,默認識空格。
$HOME 這個變量中存儲了當前用戶的根目錄路徑。
$PATH 這個變量中存儲了當前 Shell 的默認路徑字符串。
$PS1 表示第一個系統提示符。
$PS2 表示的二個系統提示符。
$PWD 表示當前工做路徑。
$EDITOR 表示系統的默認編輯器名稱。
$BASH 表示當前 Shell 的路徑字符串。
$0, $1, $2, ... 表示系統傳給腳本程序或腳本程序傳給函數的第0個、第一個、第二個等參數。
$# 表示腳本程序的命令參數個數或函數的參數個數。
$$ 表示該腳本程序的進程號,經常使用於生成文件名惟一的臨時文件。
$? 表示腳本程序或函數的返回狀態值,正常爲 0,不然爲非零的錯誤號。
$* 表示全部的腳本參數或函數參數。
$@ 和 $* 涵義類似,可是比 $* 更安全。
$! 表示最近一個在後臺運行的進程的進程號。 編輯器
【參考文獻】ide
Shell腳本調試技術 http://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/index.html函數
一個程序演示全部的shell編程知識 http://code.google.com/p/ldd6410/wiki/ShellScriptui
Linux Shell Scripting Tutorial A Beginner‘s handbook http://www.freeos.com/guides/lsst/