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...