shell高階變數用法 變數替換與字串處理

2021-10-23 19:17:43 字數 2079 閱讀 2906

s@toc

$

或者expr length "$string" -string有空格,則必須加雙引號`

val1=

"hello world"

echo

`expr index "$val1" woh`

//w-7,o-5,h-1,所以返回1

1

[hadoop@hadoop000 learn]$ val1=

"hello world"

[hadoop@hadoop000 learn]$ echo

`expr match "$val1" wo`

0[hadoop@hadoop000 learn]$ echo

`expr match "$val1" he`

2[hadoop@hadoop000 learn]$ echo

`expr match "$val1" he.*`

11

$

或者expr substr "$變數" 從位置開始 擷取的長度

val1=

"hello world"

[hadoop@hadoop000 learn]$ echo

$ //從空格處開始到最後

world

[hadoop@hadoop000 learn]$ echo

$ //加上空格與wo是3個長度

[hadoop@hadoop000 learn]$ echo

$ world

[hadoop@hadoop000 learn]$ echo

$ //冒號與負數之間必須有空格

wor[hadoop@hadoop000 learn]$ echo

`expr substr "$val1" 3 5`

llo w

$	--從開頭按照規則匹配,將開頭到第乙個匹配規則的資料刪除

$ --從開頭按照規則匹配,將開頭到最後乙個匹配規則的資料刪除

$ --從尾部按照規則匹配,將開頭到第乙個匹配規則的資料刪除

$ --從尾部按照規則匹配,將開頭到最後乙個匹配規則的資料刪除

$ --只替換匹配到的第乙個

$ --全部替換

#/bin/bash

string=

"the apache hadoop project develops open-source software,the apache hadoop software library is a framework"

function print_str

function len_str

}# 刪除字串只能從頭開始匹配,所以轉換思路,替換為空

function del_hadoop

}function rep_hadoop_mapreduce_first

}function rep_hadoop_mapreduce_all

}# 主程式

while

true

doecho

"【string=$string】"

print_str

#接收使用者輸入

read -p "請根據提示輸入輸入數字1|2|3|4|q|q:" choice

case

$choice

in 1)

len_str

;; 2)

del_hadoop

;; 3)

rep_hadoop_mapreduce_first

;; 4)

rep_hadoop_mapreduce_all

;; q|q)

exit;;

*)echo

"error,pleas enter 1|2|3|4|q|q,thanks";;

esac

done

shell變數高階

使用readonly命令可以將變數定義為唯讀變數,唯讀變數的值不允許被修改。bin bash var1 1111 echo var1 1111 var1 2222 echo var1 2222 readonly var1 var1 3333 var1 readonly variable echo v...

shell指令碼變數替換

bin bash variable 1 me i love you,do you love me girl i don t love you,go away n 從變數開頭進行匹配,將符合匹配最短的字串刪除 echo befor delete variable 1 var1 echo after d...

shell 變數替換問題

今天遇到了乙個sed替換的問題,背景是,我需要替換某乙個yaml 檔案的某乙個key值為乙個變數。採用以下的 substring s source source g targetfile yaml sed i 這個時候會報sed e expression 1,char 34 unknown opti...