Linux egrep及bash的變數

2022-02-20 07:47:38 字數 3168 閱讀 2978

egrep及擴充套件的正規表示式

egrep = grep -e;

擴充套件正規表示式的元字元:

字元匹配

「.」、[ ]、[^];

匹配次數

""、+、?、、;

位置錨定

^、$、\、\b;

分組( );

支援後向引用;

或者:|

例子:a|cat;

fgrep:不支援正規表示式搜尋,嚴格匹配給定的字元;

bash

bash中變數的種類

本地變數:生效範圍為當前shell,不包括其父shell和子shell

環境變數:生效範圍為當前shell及其子shell;

區域性變數:生效範圍為當前shell一段**片段中(通常指一段函式之內);

特殊變數:$?,$0,$*,$@,$#;

位置變數:根據位置對應關係,將命令列中的引數依次賦值給指令碼中的位置變數:$1,$2,… ;

本地變數

變數賦值:name=『value』;

value:

可以使用直接賦值; name=『string』

可以引用現有的變數;name=『$path』

可以引用命令;name=`command` 或 name=$(command);

變數引用:

" ":弱引用,其中的變數引用會被替換為相對應的值;

』 ':強引用,其中的變數引用不會被替換為對應的值,而是保持原來的字元內容;

顯示已定義的變數:

set;

撤銷變數:

unset name;

環境變數:本地變數可以被匯出為環境變數;

變數宣告,賦值:

export name=value;

declare -x name=value;

變數引用:同本地變數;

顯示所有環境變數

env、export、printenv;

銷毀變數:

unset name;

位置變數

在指令碼**中呼叫通過命令列傳遞給指令碼的引數;

$1,$2,…:對應呼叫第1、第2、…個引數;0:

呼叫指令碼

名字本身

;    0:

呼叫指令碼

名字本身

;:呼叫命令列中的所有引數,並且當做乙個引數來使用(不精確,但意思類似);

katex parse error: expected 'eof', got '#' at position 32: …每個引數單獨呼叫;

$#̲:傳遞給指令碼的引數個數;

…random;

增強型賦值:

+=,-+,++,–,/=,%=,==;

自增、自減:

let var++ → let var+=;

let var-- → let var-=;

條件測試

判斷某需求是否滿足,需要由測試機制來實現;

note:專用的測試表示式需要由測試命令輔助完成測試過程;

測試命令

test expression;

[ expression ];

[[ expression ]];

note:方括號於表示式中間必須存在乙個空白字元;

bash的測試型別

數值測試

-gt:是否大於;

-lt:是否小於;

-ne:是否不等於;

-ge:是否大於等於;

-te:是否小於等於;

-eq:是否等於;

字元測試

>:是否大於;字元的大小是根據ascii來比較的;

==:是否等於;

!=:是否不等於;

=~:左側的字串是否能被右側的pattern所匹配;

note:使用~=時,需要使用[[ expression ]];

-z:是否為空;

-n:是否為非空;

note:用於字串比較的時候,應該使用引號把字串括起來;

bash條件測試(檔案測試)

測試方式

test expression

[ expression]

[[ expression ]]

測試表示式的類別

數值比較

字串測試

檔案測試:獲取幫助:man bash;

-a file:檔案是否存在;

-e file:檔案是否存在;

-d file:檔案是否存在且為目錄;

-f file:檔案是否存在且為普通檔案;

-r file:檔案是否存在當前使用者對此檔案是否具有可讀許可權;

-w file:檔案是否存在當前使用者對此檔案是否具有可寫許可權;

-x file:檔案是否存在且當前使用者對此檔案是否具有可執行檔案;

-g file:檔案是否存在且具有sgid許可權;

-u file:檔案是否存在且具有suid許可權;

-s file:檔案是否存在且非空;

-t fd:fd表示檔案描述符開啟,且與某終端相關;

一般情況下,主機啟動時自己啟動的檔案與終端無關,自己手動啟動的與終端有關;

雙目測試:通常用於比較兩個配置檔案的新舊;

file1 -ef file2:file1與file2是否為同乙個檔案;

file1 -nt file2:file1是否比file2更新;

file1 -ot file2:file1是否比file2更舊;

組合條件測試:

邏輯運算:

第一種方式

command || command

command && command

!command

[ -e file ] || [ -r file ]

第二種方式

command -o command

command -a command

! command

必須使用測試命令進行;

[ -e file -o -r file ]

取非的時候可能用到:

摩根定理:

!(p && q) = (!p) || (!q)

!(p ||q) = (!p) && (!q)

bash自定義退出狀態碼:

exit [n];

指令碼中一旦執行到exit,就會直接退出指令碼,且退出狀態碼為[n];

如果沒有設定exit,則以指令碼最後一條命令的狀態碼為指令碼最後的退出狀態碼;

bash特性及bash指令碼程式設計初步

1.bash簡介 bash 是乙個為gnu計畫編寫的unix shell。它的名字是一系列縮寫 bourne again shell 這是關於bourne shell sh 的乙個雙關語 bourne again born again bourne shell是乙個早期的重要shell,由史蒂夫 伯...

bash配置及應用

bash的自動補全功能可以這樣設定 inputrc 中增加兩行 set completion ignore case onset completion map case on然後tab匹配的時候忽略大小寫 忽略橫槓 下劃線!擴充套件自己的history的大小,設定方法如下 echo histcont...

bash基本特性及基礎命令

3.路徑補全 4.命令列展開 5.命令的執行狀態 結果 二 目錄管理類命令 三 文字檔案檢視類命令 四 檔案的時間戳管理工具 環境變數 histsize 命令歷史記錄的條數 histfile bash history histfilesize 命令歷史檔案記錄歷史的條數 建議使用 esc,先按esc...