shell基礎 字串和變數的操作

2022-03-18 09:03:07 字數 2697 閱讀 2822

一.統計字串長度

1.wc –l

[root@~_~day4]# echo "hello" | wc -l

2.expr length string

[root@~_~day4]# echo `expr length "hello"`

3.$[root@~_~day4]# a="hello"

[root@~_~day4]# echo $

壓力測試實驗:

[root@~_~~]# echo $chars

hello world

[root@~_~~]# time for i in $(seq 11111);do count=$;done

real  0m0.069s

user 0m0.069s

sys   0m0.001s

[root@~_~~]# time for i in $(seq 11111);do count=`echo expr length "#chars"`;done

real  0m3.949s

user 0m0.481s

sys   0m3.853s

[root@~_~~]# time for i in $(seq 11111);do count=`echo $| wc -l`;done

real  0m13.643s

user 0m2.743s

sys   0m14.989s

注意:內建命令執行比管道快得多,速度快慢如下:$>$ |wc -l >$

二.字串模式匹配

1.檢視所有幫助:

首先:man bash

然後:/parameter expansion

2.擷取字串長度

$ :從offset擷取到字串結尾

$ :從offset擷取長度為length的字串

[root@~_~day4]# a="hello world"

[root@~_~day4]# echo $

llo[root@~_~day4]# echo $

llo world

3.替換

$:用一種匹配模式pattern匹配字串,並用string替代

(1).$ :前面匹配

(2).$:後面匹配

(3).$:匹配第乙個matchstr

[root@~_~day4]# a="hello world"

[root@~_~day4]# echo $

你好 world

[root@~_~day4]# echo $

hello 世界

[root@~_~day4]# a="hello hello world"

[root@~_~day4]# echo $

你好 hello world

4.刪除

$:從變數string開頭開始刪除最短匹配$word子串

$:從變數string開頭開始刪除最長匹配$word子串

$:從變數string結尾開始刪除最短匹配$word子串

$:從變數string結尾開始刪除最長匹配$word子串

[root@~_~day4]# echo $

hello worldworld

[root@~_~day4]# echo $

hello worldworld

[root@~_~day4]# a="hello hello worldworld"

[root@~_~day4]# echo $

hello hello world

[root@~_~day4]# echo $

hello hello world

三.空值處理

1.$ use default values. 當$的值為空或是沒有設定,用word的值將作為表示式的值,否則$就是表示式的值

[root@~_~day4]# echo $

hello

[root@~_~day4]# echo $

[root@~_~day4]# myvalue="test"

[root@~_~day4]# echo $

test

2.$  assign default values. 當$的值為空或是沒有設定,將word的值賦予$將並作為表示式的值,否則$就是表示式的值

[root@~_~day4]# echo $

hello

[root@~_~day4]# echo $

hello

[root@~_~day4]#

3.$  display  error  if  null  or  unset

當$值為空或者沒有設定的時候,用[word]值作為標準錯誤輸出提示並退出shell且返回非0狀態。否則它就是該表示式的值

[root@~_~day4]# echo $

-bash: myparam: the value is empty

[root@~_~day4]# echo $

[root@~_~day4]#

4.$use alternate value

當$值為空或者沒有設定的時候,表示式返回null。否則用[word]替換表示式的值。

[root@~_~day4]# echo $

[root@~_~day4]# myparam="hello"

[root@~_~day4]# echo $

the value is empty

[root@~_~day4]#

shell 之 指令碼變數和字串擷取

假設變數為var 其中 var 是變數名,號是運算子,表示從左邊開始刪除第乙個 號及左邊的所有字元 即刪除 http 結果是 www.hao.com 123.htm 表示從左邊開始刪除最後 最右邊 乙個 號及左邊的所有字元 即刪除 結果是 123.htm 表示從右邊開始,刪除第乙個 號及右邊的字元 ...

shell 字串操作 變數替換

這篇部落格和我之前整理的字串處理有部分重疊 但是主要字串的特換還是有用,就 了一下。表示式含義 獲取字串 string 的長度 從字串 string position 處擷取子串 從字串 string position 處擷取length 長度的子串 從字串 string 的開頭,刪除最短匹配 su...

變數和字串

一 變數名 1 變數名在使用之前需進行賦值 2 變數名是由數字,字母,下劃線組成,但是不能以數字作為開頭,這與c的識別符號的規則是一樣的 3 python中區分字母大小寫 4 要區分 與 是賦值,是比較大小,判斷等號兩邊是不是相等 5 在取變數名的時候,要盡量專業。eg t 小甲魚 與teacher...