Shell學習記錄3

2021-10-02 22:45:26 字數 3617 閱讀 4914

普通陣列:只能使用整數作為陣列索引(元素下標)

定義

#陣列名[索引下標]=值

array[0]=v1

array[1]=v2

array[2]=v3

#一次賦予多個值

array=(v1 v2 v3 v4)

array=(aa bb "cc"

)array=(1 2 3 4 "abc"

[10]=lll)

#將結果賦值給陣列

array1=(`cat

/etc/password`)

array2=(`ls

/etc`)

讀取

#$

echo

$echo

$#列印陣列元素個數

echo

$#列印陣列元素下標

echo

$#訪問指定的元素;1代表從下標為1的元素開始獲取;2代表獲取後面幾個元素

echo

$#檢視普通陣列的資訊

declare -a

關聯陣列:可以使用字串作為陣列索引(下標)

首先要宣告是關聯陣列

declare -a array
賦值

#陣列名[下標]=變數值

array[a]

=one

array[b]

=two

array[c]

=three

#array=

([a]

=one [b]

=two [c]

=three)

讀取同上

例項

url=www.baidu.com

#變數的長度

變數「內容」的替換

例項

url=abab

echo

$abab

url=abab

echo

$abab

結構

case var in

pattern 1)

command1 ;;

pattern 2)

command2 ;;

pattern 3)

command3 ;;

*)#default

command4 ;;

esac

例項

#!/bin/bash

var=

"$1"

echo

$var

case

$var

ina|a)

echo 1;;

b|b)

echo 2;;

*)echo 3;;

esac

./a.sh a

1./a.sh b

2./a.sh c

3

定義

函式名(

)

function 函式名(

)

例項

#建立檔案

vim a.sh

#!/bin/bash

hello(

)#讀取

source a.sh

hello

hello world

#也可以不用source讀取直接在檔案中呼叫

vim a.sh

#!/bin/bash

hello(

)hello

關於return

return預設返回函式中最後乙個命令狀態值,也可以給定引數值,範圍是0-256

全域性

希望自己的函式變成全域性的話去修改/etc/bashrc吧

& 表示任務在後台執行,加在命令的末尾&& 表示前一條命令執行成功時,才執行後一條命令>是指:將正常資訊重定向&>可以將錯誤資訊或者普通資訊都重定向輸出​ 這裡正規表示式主要是用來對字串進行操作,主要可以實現匹配郵箱,匹配身份證號碼,手機號,銀行卡號等功能。

字元描述

\建乙個字元標記為乙個特殊字元,或乙個原義字元,比如,」n」匹配字元「n」, 「/n」匹配乙個換行符,序列」\」匹配」\」而「(」匹配」(「。

^匹配輸入字串的開始位置

$匹配輸入字串的結束位置

n是乙個非負整數,匹配確定的n次,例如:」o」不能匹配「bob」種的「o」,但是能匹配「book」種的兩個」o」

n是乙個非負整數,至少匹配n次,例如:「o「不能匹配『bob』,但可以匹配」foooood「種的所有『o』,"o"等價於」o+「,"o"等價於」o*「

m和n均為非負整數,其中n<=m。最少匹配n次且最多匹配m次,比如「o」將匹配「fooooodv」種的前三個o

*匹配前面的子表示式零次或多次

+匹配前面的子表示式一次或多次

?匹配前面的子表示式零次或一次

?當該字元緊跟在任何乙個其他限制符(*,+,?,,,)後面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜尋的字串,而預設的貪婪模式則盡可能多的匹配所搜尋的字串。例如,對於字串「oooo」,「o+?」將匹配單個「o」,而「o+」將匹配所有「o」。

.匹配除了」\n「之外的任何單個字元,要匹配包括「\n」在內的任何字元,請使用像「(.|\n)」的模式。

(pattern)

匹配pattern並獲取這一匹配的子字串。該子字串使用者向後引用。要匹配圓括號字元,請使用「(」或「)」。

x豎線y

匹配x或y。 例如」z豎線food「能匹配」z「或」food」.」(z豎線f)oood」則匹配」zood「或」food「。

[xyz]

字元集合(character class)。匹配所包含的任意乙個字元。例如,」[abc]「可以匹配」plain「中的」a」。其中特殊字元僅有反斜線\保持特殊含義,用於轉義字元。其它特殊字元如星號、加號、各種括號等均作為普通字元。脫字元^如果出現在首位則表示負值字元集合;如果出現在字串中間就僅作為普通字元。連字元 - 如果出現在字串中間表示字元範圍描述;如果如果出現在首位則僅作為普通字元。

[^xyz]

排除型(negate)字元集合。匹配未列出的任意字元。例如,「[^abc]」可以匹配「plain」中的「plin」。

[a-z]

字元範圍。匹配指定範圍內的任意字元。例如,「[a-z]」可以匹配「a」到「z」範圍內的任意小寫字母字元。

[a-z]

字元範圍。匹配指定範圍內的任意字元。例如,「[a-z]」可以匹配「a」到「z」範圍內的任意小寫字母字元。

shell 學習記錄

1 以兩個破折號 來表示選項結尾的用法,源自system v。自此之後命令列上看起來像選項的任何專案,都將 一視同仁的當成引數處置。上面這個句話是什麼鬼意思?2 shell是別的三種命令 1 內建命令 比如cd echo test 2 shell函式 3 外部命令 shell變數 1 變數名字 字元...

shell學習記錄

1.shell 副檔名 sh 約定標記,告訴系統指令碼需要的直譯器,即哪一種shell 執行shell檔案的三種方法 test.sh bin sh test.sh bin bash test.sh注意 shell變數等號兩邊不能有空格,使用變數的時候加 符號字串擷取 與 刪除左邊字元 保留右邊字元 ...

shell學習記錄

段落 sed 的命令格式 sed command file sed command 動作 command1 file1 f test x test x then 這裡的關鍵有幾點 1 使用單個等號 2 注意到等號兩邊各有乙個空格 這是unix shell的要求 3 注意到 test x最後的x,這是...