1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| * 判断读取字符串的值
${var}:变量var的值, 与$var相同
${var-DEFAULT}:如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT}:如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 * 例 [root@template sh]# echo ${bbb-'ok'} ok [root@template sh]# echo $bbb
# bbb没有被声明过 ${var=DEFAULT}:如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:=DEFAULT}:如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 * 例 [root@template sh]# echo ${abc='ok'} ok [root@template sh]# echo $abc ok ${var+OTHER}:如果var声明了, 那么其值就是$OTHER, 否则就为null字符串 ${var:+OTHER}:如果var被设置了, 那么其值就是$OTHER, 否则就为null字符串 ${var?ERR_MSG}:如果var没被声明, 那么就打印$ERR_MSG * ${var:?ERR_MSG}:如果var没被设置, 那么就打印$ERR_MSG * ${!varprefix*}:匹配之前所有以varprefix开头进行声明的变量 ${!varprefix@}:匹配之前所有以varprefix开头进行声明的变量 # ${!varprefix*}与${!varprefix@}相似,可以通过变量名前缀字符,搜索已经定义的变量,无论是否为空值。 例 [root@template sh]# var1=11;var2=22;var3=33 [root@template sh]# echo $var1 11 [root@template sh]# echo $var2 22 [root@template sh]# echo $var3 33 [root@template sh]# echo ${!v@} var1 var2 var3 [root@template sh]# echo ${!v*} var1 var2 var3
* 字符串操作 * 截取长度 ${
* 截取字符串 ${string:position}:在$string中, 从位置$position开始提取子串 ${string:position:length}:在$string中, 从位置$position开始提取长度为$length的子串 * 删除子串 ${string ${string ${string%substring}:从变量$string的结尾, 删除最短匹配$substring的子串 ${string%%substring}:从变量$string的结尾, 删除最长匹配$substring的子串 ${变量名 ${变量名%substring正则表达式}:从字符串结尾开始配备substring,删除匹配上的表达式。 # ${test##*/},${test%/*} 分别是得到文件名,或者目录地址最简单方法。
* 字符串替换 ${string/substring/replacement}:使用$replacement, 来代替第一个匹配的$substring ${string//substring/replacement}:使用$replacement, 代替所有匹配的$substring ${string/ ${string/%substring/replacement}:如果$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring # "* $substring" 可以是一个正则表达式。 # ${变量/查找/替换值} 一个“/”表示替换第一个,”//”表示替换所有,当查找中出现了:”/”请加转义符”\/”表示。 例 [root@template sh]# num=oldboy5343 [root@template sh]# echo "${num//[0-9]/}" oldboy # 这是使用空来代替oldboy5343中的所有数字,所以取的值只有字母 [root@template sh]# echo "${num//[0-9]/a}" oldboyaaaa
|