最近在寫shell腳本,發現了一些shell 字符串的騷操作,可以提升效率。
字符串讀取
- ${var} : 變量var的值
- ${var-DEFAULT} : 如果var沒有被聲明,var的值就是$DEFAULT
- ${var:-DEFAULT} : 如果var沒有被聲明,或者為空,var的值就是$DEFAULT
- ${var=DEFAULT} : 如果var沒有被聲明,var的值就是$DEFAULT
- ${var: =DEFAULT} : 如果var沒有被聲明,或者為空,var的值就是$DEFAULT
- ${#var} : 得到 $var的長度
字符串操作
- ${#string} : $string 的長度
- ${string:position} : 從$position位置開始的子字符串
- ${string:position:length} : 從$position位置開始,長度為length的子字符串
- ${string#substring} : 從頭開始,刪除最短匹配$substring的字符串
- ${string##substring} : 從頭開始,刪除最長匹配$substring的字符串
- ${string%substring} : 從結尾開始,刪除最短匹配$substring的字符串
- ${string%%substring} : 從結尾開始,刪除最長匹配$substring的字符串
- ${string/str1/str2} : 使用str2替換第一個匹配的$str1
- ${string//str1/str2} : 使用str2替換所有匹配的$str1
- ${string/#str1/str2} : 如果$string的前綴和$str1匹配,用$str2替換$str1
- ${string/%str1/str2} : 如果$string的后綴和$str1匹配,用$str2替換$str1