Shell基石:模式匹配

2017-02-04  本文已影响497人  mincase
shell基础

模式匹配在Shell脚本中的运用很广泛。
举几个栗子:

"三元运算符"

#!/usr/bin/env bash
x=${1:-"hello"}
echo $x
# 打印第一个参数(默认hello)

在上述例子中,x=${1:-"hello"} 中的 1:- 可以理解为三元运算符的匹配条件,表达的含义是,如果参数列表中 $1 的值不为空,则 x 值为 $1,否则值为"hello"。表达式中的 - 则可以理解为是该表达式的匹配模式,另外还有 + = ? 三种模式:

模式匹配记忆方法:
# 是去掉左边(在键盘上#在$之左边)
% 是去掉右边(在键盘上%在$之右边)
# 和 % 中的单一符号是最小匹配,两个相同符号是最大匹配。

${var%pattern}, ${var%%pattern}, ${var#pattern}, ${var##pattern}

# var=testcase
# echo $var
testcase
# echo ${var%s*e}
testca
# echo $var
testcase
# echo ${var%%s*e}
te
# echo ${var#?e}
stcase
# echo ${var##?e}
stcase
# echo ${var##*e}

# echo ${var##*s}
e
# echo ${var##test}
case

字符串提取和替换
${var:num},${var:num1:num2},${var/pattern/pattern},${var//pattern/pattern}

var=/home/centos
# echo $var
/home/centos
# echo ${var:5}
/centos
# echo ${var: -6}
centos
# echo ${var:(-6)}
centos
# echo ${var:1:4}
home
# echo ${var/o/h}
/hhme/centos
# echo ${var//o/h}
/hhme/cenths

end.

上一篇 下一篇

猜你喜欢

热点阅读