Bash百寶箱 shell內建命令之冒號

2021-07-22 21:19:29 字數 1907 閱讀 7887

在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...