bash特殊字元 2

2022-06-15 12:36:09 字數 3176 閱讀 3302

------------恢復內容開始------------

tips:

,{}使用時前後要空格 [ asb=123 ]

1.小括號(( ))

1)命令組

在括號中的命令列表,將會作為乙個子 shell 來執行。

在括號中的變數,由於是在子shell中,所以對於指令碼剩下的部分是不可用的。父程序,也就是指令碼本身,將不能夠讀取在子程序中建立的變數,也就是在子shell 中建立的變數。如:

$ vim test20.sh
輸入**:

#!/bin/bash

a=123

( a=321; )

echo "$a" #a的值為123而不是321,因為括號將判斷為區域性變數

執行**:

$ bash test20.sh

a = 123

在圓括號中 a 變數,更像是乙個區域性變數。

2)初始化陣列

建立陣列

$ vim test21.sh
輸入**:

#!/bin/bash

arr=(1 4 5 7 9 21)

echo $ # get a value of arr

執行**:

$ bash test21.sh

72.大括號()

1)檔名擴充套件

複製 t.txt 的內容到 t.back 中

$ vim test22.sh

輸入**:

#!/bin/bash

if [ ! -w 't.txt' ];

then

touch t.txt

fiecho 'test text' >> t.txt

cp t.

執行**:

$ bash test22.sh
檢視執行結果:

$ ls

$ cat t.txt

$ cat t.back

注意: 在大括號中,不允許有空白,除非這個空白被引用或轉義。

2)**塊

**塊,又被稱為內部組,這個結構事實上建立了乙個匿名函式(乙個沒有名字的函式)。然而,與「標準」函式不同的是,在其中宣告的變數,對於指令碼其他部分的**來說還是可見的。

$ vim test23.sh

輸入**:

#!/bin/bash

a=123

echo "a = $a"

執行**:

$ bash test23.sh

a = 321

變數 a 的值被更改了。

3.中括號([ ])

1)條件測試

條件測試表示式放在[ ]中。下列練習中的-lt (less than)表示小於號。

雙中括號([[ ]])也用作條件測試(判斷)

2)陣列元素

在乙個array結構的上下文中,中括號用來引用陣列中每個元素的編號。

4.尖括號(< 和 >)

重定向test.sh > filename:重定向test.sh的輸出到檔案 filename 中。如果 filename 存在的話,那麼將會被覆蓋。

test.sh &> filename:重定向 test.sh 的 stdout(標準輸出)和 stderr(標準錯誤)到 filename 中。

test.sh >&2:重定向 test.sh 的 stdout 到 stderr 中。

test.sh >> filename:把 test.sh 的輸出追加到檔案 filename 中。如果filename 不存在的話,將會被建立。

5.豎線(|)

管道分析前邊命令的輸出,並將輸出作為後邊命令的輸入。這是一種產生命令鏈的好方法。

$ vim test26.sh

輸入**:

#!/bin/bash

tr 'a-z' 'a-z'

exit 0

現在讓我們輸送ls -l的輸出到乙個指令碼中:

$ chmod 755 test26.sh

$ ls -l | ./test26.sh

輸出的內容均變為了大寫字母。

6.破折號(-)

1)選項,字首

在所有的命令內如果想使用選項引數的話,前邊都要加上「-」。

if [ "$a" -eq "$b" ]

2)用於重定向stdin或stdout

下面指令碼用於備份最後24小時當前目錄下所有修改的檔案.

$ vim test28.sh

輸入**:

#!/bin/bash

backupfile=backup-$(date +%m-%d-%y)

# 在備份檔案中嵌入時間.

archive=$

# 如果在命令列中沒有指定備份檔案的檔名,

# 那麼將預設使用"backup-mm-dd-yyyy.tar.gz".

tar cvf - `find . -mtime -1 -type f -print` > $archive.tar

gzip $archive.tar

echo "directory $pwd backed up in archive file \"$archive.tar.gz\"."

exit 0

執行**:

$ bash test28.sh

$ ls

------------恢復內容結束------------

Bash常用特殊字元

bash 常用特殊字元 萬用字元,代表乙個或多個字元或數字 萬用字元,代表乙個字母 批註說明 轉義符號 分隔兩個管道命令的界定 連續性命令的界定,在一行輸入多條命令 使用者家目錄 變數前需要加的變數取代值 將指令移動到後台執行 邏輯運算子非 路徑分隔符 輸出重導向,分別是取代 和 累加 單引號,沒有...

Bash 特殊字元 下

test.sh filename 重定向 test.sh 的輸出到檔案 filename 中。如果 filename 存在的話,那麼將會被覆蓋。test.sh filename 重定向 test.sh 的 stdout 標準輸出 和 stderr 標準錯誤 到 filename 中。test.sh ...

Bash中的特殊字元

行首以 開頭 除 之外 的是注釋。是用於指定當前指令碼的直譯器,我們這裡為bash,且應該指明完整路徑,所以為 bin bash 當然,在echo中轉義的 是不能作為注釋的 vim test.sh輸入如下 並儲存。中文為注釋,無需要輸入 bin bash echo the here dose not...