Shell字符串处理之 ${}
防偽碼:仰天大笑出門去,我輩豈是蓬蒿人。
上一章節講解了為什么用${}引用變量,${}還有一個重要的功能,就是文本處理,單行文本基本上
可以滿足你所有需求。
2 2 .1 ?獲取字符串長度
# VAR='hello world!'
# echo $VAR
hello world!
# echo ${#VAR}
12
2 2 .2 ?字符串切片
格式:
${parameter:offset}
${parameter:offset:length}
截取從 offset 個字符開始,向后 length 個字符。
截取 hello 字符串:
# VAR='hello world!'
# echo ${VAR:0:5}
hello
截取 wo 字符:
# echo ${VAR:6:2}
wo
截取 world 字符串:
# echo ${VAR:5:-1}
world
截取最后一個字符:
# echo ${VAR:(-1)}
!
截取最后二個字符:
# echo ${VAR:(-2)}
d!
截取從倒數第 3 個字符后的 2 個字符:
# echo ${VAR:(-3):2}
ld
2 2 .3 ?替換字符串
格式:${parameter/pattern/string}
# VAR='hello world world!'
將第一個 world 字符串替換為 WORLD:
# echo ${VAR/world/WORLD}
hello WORLD world!
將全部 world 字符串替換為 WORLD:
# echo ${VAR//world/WORLD}
hello WORLD WORLD!
2 2 .4 ?字符串截取
格式:
${parameter#word} # 刪除匹配前綴
${parameter##word}
${parameter%word} # 刪除匹配后綴
${parameter%%word}
# 去掉左邊,最短匹配模式,##最長匹配模式。
% 去掉右邊,最短匹配模式,%%最長匹配模式。
# URL="http://www.baidu.com/baike/user.html"
以//為分隔符截取右邊字符串:
# echo ${URL#*//}
www.baidu.com/baike/user.html
以/為分隔符截取右邊字符串:
# echo ${URL##*/}
baike.user.html
以//為分隔符截取左邊字符串:
# echo ${URL%%//*}
http:
以/為分隔符截取左邊字符串:
# echo ${URL%/*}
http://www.baidu.com
以.為分隔符截取左邊:
# echo ${URL%.*}
http://www.baidu.com/baike/user
以.為分隔符截取右邊:
# echo ${URL##*.}
html
2 2 .5 ?變量狀態賦值
${VAR:-string} 如果 VAR 變量為空則返回 string
${VAR:+string} 如果 VAR 變量不為空則返回 string
${VAR:=string} 如果 VAR 變量為空則重新賦值 VAR 變量值為 string
${VAR:?string} 如果 VAR 變量為空則將 string 輸出到 stderr
如果變量為空就返回 hello world!:
# VAR=
# echo ${VAR:-'hello world!'}
hello world!
如果變量不為空就返回 hello world!:
# VAR="hello"
# echo ${VAR:+'hello world!'}
hello world!
如果變量為空就重新賦值:
# VAR=
# echo ${VAR:=hello}
hello
# echo $VAR
hello
如果變量為空就將信息輸出 stderr:
# VAR=
# echo ${VAR:?value is null}
-bash: VAR: value is null
${}主要用途大概就這么多了,另外還可以獲取數組元素,在后面章節會講到。
2 2 .6 ?字符串顏色
再介紹下字符串輸出顏色,有時候關鍵地方需要醒目,顏色是最好的方式:
字體顏色 ?字體背景顏色 ?顯示方式
30:黑
31:紅
32:綠
33:黃
34:藍色
40:黑
41:深紅
42:綠
43:×××
44:藍色
0:終端默認設置
1:高亮顯示
4:下劃線
5:閃爍
7:反白顯示
35:紫色
36:深綠
37:白色
45:紫色
46:深綠
47:白色
8:隱藏
格式:
\033[1;31;40m # 1 是顯示方式,可選。31 是字體顏色。40m 是字體背景顏色。
\033[0m # 恢復終端默認顏色,即取消顏色設置。
示例:
#!/bin/bash
# 字體顏色
for i in {31..37}; do
echo -e "\033[$i;40mHello world!\033[0m"
done
# 背景顏色
for i in {41..47}; do
echo -e "\033[47;${i}mHello world!\033[0m"
done
# 顯示方式
for i in {1..8}; do
echo -e "\033[$i;31;40mHello world!\033[0m"
done
謝謝觀看,真心的希望能幫到您!
轉載于:https://blog.51cto.com/yw666/1897785
總結
以上是生活随笔為你收集整理的Shell字符串处理之 ${}的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Netty权威指南之伪异步I/O编程
- 下一篇: 换个姿势为安装包重签名