shell中豎線的作用 Shell中符號意義

2021-10-13 08:29:19 字數 1562 閱讀 1974

末端 (end-of-line)。這個常用在 grep、sed、awk 以及 vim(vi) 當中。

${} 變數的正規表示式

bash 對 ${} 定義了不少用法。見本文後部

$*引用script 的執行引用變數

引用引數的演算法與一般指令相同,指令本身為0,其後為1,然後依此類推。引用變數的代表方式如下:

$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $, $…..

個位數的,可直接使用數字,但兩位數以上,則必須使用 {} 符號來括住。

$* 則是代表所有引用變數的符號。使用時,得視情況加上雙引號。

echo 」$*」

$@ 與 $* 具有相同作用的符號,不過她們兩者有乙個不同點。

符號 $* 將所有的引用變數視為乙個整體。但符號 $@ 則仍舊保留每個引用變數的區段觀念。

這也是與引用變數相關的符號,她的作用是告訴你,引用變數的總數量是多少。

echo 」$#」

$? 狀態值 (status variable)

一般來說,unix(linux) 系統的程序以執行系統呼叫exit() 來結束的。這個回傳值就是status值。回傳給父程序,用來檢查子程序的執行狀態。

一般指令程式倘若執行成功,其回傳值為 0;失敗為 1。

$$ 這個程式的pid

$! 執行上乙個指令的pid

$- 顯示shell使用的當前選項,與set命令功能相同

() 指令群組 (command group)

用括號將一串連續指令括起來,這種用法對 shell 來說,稱為指令群組。如下面的例子:(cd ~ ; vcgh=`pwd` ; echo $vcgh),指令群組有乙個特性,shell會以產生 subshell 來執行這組指令。因此,在其中所定義的變數,僅作用於指令群組本身。我們來看個例子

括號也用在 array 變數的定義上;

另外也應用在其他可能需要加上escape 字元才能使用的場合,如表示式。

這組符號的作用與 let 指令相似,用在算數運算上,是 bash 的內建功能。所以,在執行效率上會比使用 let 指令要好許多。

{} 大括號 (block of code)

有時候 script 當中會出現,大括號中會夾著一段或幾段以」分號」做結尾的指令或變數設定。

# cat ftmp-02#!/bin/basha=fshecho $a# ./ftmp-02inbcinbc

這種用法與上面介紹的指令群組非常相似,但有個不同點,它在當前的 shell 執行,不會產生 subshell。

大括號也被運用在 」函式」 的功能上。廣義地說,單純只使用大括號時,作用就像是個沒有指定名稱的函式一般。因此,這樣寫 script 也是相當好的一件事。尤其對輸出輸入的重導向上,這個做法可精簡 script 的複雜度。

此外,大括號還有另一種用法,如下

這種大括號的組合,常用在字串的組合上,來看個例子

mkdir -

我們得到 usera-home, usera-bin, usera-data, userb-home, userb-bin, userb-data, userc-home, userc-bin, userc-dat

shell中 的作用

假設我們定義了乙個變數為 file dir1 dir2 dir3 my.file.txt 可以用 分別替換得到不同的值 刪掉第乙個 及其左邊的字串 dir1 dir2 dir3 my.file.txt 刪掉最後乙個 及其左邊的字串 my.file.txt 刪掉第乙個.及其左邊的字串 file.txt...

shell中引號的作用

引號包含雙引號,單引號,反引號,反斜槓 作用如下 search dbl vm 211 13 algorithm echo 24782 search dbl vm 211 13 algorithm echo 單引號把特殊符號給轉義了 search dbl vm 211 13 algorithm ech...

Shell中括號的作用

命令組。括號中的命令將會斷開乙個子shell順序執行,所以括號中的變數不能被指令碼餘下的部分使用。括號中多個命令之間用分號隔開,最後乙個命令可以沒有分號,各命令和括號之間不必有空格。命令替換。等同於 cmd shell掃瞄一遍命令列,發現了 cmd 結構,便將 cmd 中的cmd執行一次,得到其標準...