在shell中,冒號「:」是乙個內建(builtin)命令,格式如下:
: [arguments]
冒號命令本身沒什麼***,使用場景有限,一般用於引數擴充套件,有以下幾種用法:
$ 如果parameter沒有設定或者為空,替換為word;否則替換為parameter的值。
$ 如果parameter沒有設定或者為空,不進行任何替換;否則替換為word。
$ 如果parameter沒有設定或者為空,把word賦值給parameter。最終替換為parameter的值。
$ 如果parameter沒有設定或者為空,把word輸出到stderr,否則替換為parameter的值。
$ 擴充套件為parameter中從offset開始的子字串。
$ 擴充套件為parameter中從offset開始的長度不超過length的字元。
例如:
$ foo=hellobash
$ echo $
hellobash
$ echo $
hellobash
$ echo $
hellobash
$ echo $
newword
$ echo $
hellobash
$ echo $
hellobash
$ echo $
hellobash
$ echo $
hellobash
$ echo $
hellobash
$ unset foo
$ echo $
$ echo $
newword
$ echo $
$ echo $
$ echo $
$ echo $
bash:
foo: newword
$ echo $
$ echo $
newword
$ echo $
newword
$ echo $
wword
$ echo $
wwo
有時候,冒號命令用作佔位符,什麼事情也不做,其退出狀態為0,如下:
$
:$ echo $?0$
: abc
$ echo $?
0
在shell擴充套件的模式匹配中,也用到了冒號,用法如下:
[[:class:]] 通過class指定字元類別,class可以是posix標準中的下列關鍵字:alnum、alpha、ascii、blank、cntrl、digit、graph、lower、print、punct、space、upper、word、xdigit,其中word表示大小寫字母、數字和下劃線。
例如下面例子中的字串替換(數字替換為0,小寫字母替換為x,大寫字母替換為x):
var=hellobash123
$ echo $var
hellobash123
$ echo $
hellobash000
$ echo $
***xxbash123
$ echo $
hello***x123
在shell的數**算中,支援像其它程式語言一樣的三元運算子,其中就用到了冒號,如下:
$ var=100
$ echo $var
100$ (($var>100?var++:var--))
~$ echo $var
99
另外,在shell中冒號還用作變數間的分隔符,例如環境變數path。 Bash百寶箱 初識gdb
gdb是什麼?在linux終端找man後,對gdb的描述如下 gdb gdb即the gnu debugger的縮寫。gdb是一種除錯工具,使用gdb可以窺探乙個程式在執行時或者crash時的內部資訊,主要有以下四種功能 1 啟動程式,按自定義的方式執行程式。2 在特定條件下 即斷點處 stop程式...
Bash百寶箱 shell變數及擴充套件
shell變數賦值語句為 name value 等號兩邊不能有空格,可以給shell變數追加內容 name value 取消shell變數的設定使用 unset name 例子如下。var 1 echo var 1 var 123 echo var 123 var 100 echo var 1231...
Bash百寶箱shell變數及擴充套件
shell變數賦值語句為 name value 等號兩邊不能有空格,可以給shell變數追加內容 name value 取消shell變數的設定使用 unset name 例子如下。var 1 echo var 1 var 123 echo var 123 var 100 echo var 1231...