看脚本会用到的Linux和Unix下的变量运算符
一、删除变量内容运算符
#lqdflying="/home/lqd/flying/just/google.com" ---->定义变量
#echo ${lqdflying} ---->完整呈现某个变量
/home/lqd/flying/just/google.com
#echo ${lqdflying##/*/} ---->eg.1
google.com
#echo ${lqdflying#/*/} ---->eg.2
lqd/flying/just/google.com
---->使用#,从最前边开始比较,若开头为"/",则删除两个"/"之间所有的数据,即/*/。如果有2个#,则删除最长的一段/*/(如eg.1);如果是一个#,则删除最短的一段(如eg.2)。
#echo ${lqdflying%%/*/} ---->eg.3
/home/lqd/flying/just/google.com
#echo ${lqdflying%%/*} ---->eg.4
(NULL)
#echo ${lqdflying%/*} ---->eg.5
/home/lqd/flying/just
---->使用%,从最后边开始比较,若结尾为"/",则删除两个"/"之间的所有数据,即/*/(如eg.3,但是由于变量结尾不是/,所以比匹配,所以什么也没删除)。如果是两个%,则删除最长的一段/*(如eg.4);如果是一个%,则删除最短的一段/*(如eg.5)。
二、替换变量内容运算符
#lqdflying="/lqd/lqd/flying/just/google.com" ---->定义变量
#echo ${lqdflying/lqd/LQD} ---->eg.6
/LQD/lqd/flying/just/google.com
#echo ${lqdflying//lqd/LQD}
/LQD/LQD/flying/just/google.com ---->eg.7
---->/表示替换,一个/仅替换第一个(如eg.6),两个/则全部替换(如eg.7)。
三、条件判断运算符
---->lqdflying和word是两个变量
#LQD=${lqdflying:-word}
说明:若lqdflying变量未定义且非NULL,则返回其值,否则返回word的值
用途:若用户没有特别定义该变量,则返回默认值。
记忆:"-"运算符代表“退而求其次”,反正LQD一定要有值,你要使用lqdflying来定义了,也就算了,没定义,我给你一个默认的。
#LQD=${lqdflying:=word}
说明:若lqdflying变量未定义且非NULL,则返回其值,否则设置其值为word的值,并返回。
用途:一次性定义两个变量
记忆:"="运算符代表“赋值”,LQD和lqdflying都要有有赋值,你要是定义了lqdflying,就用你的,你要是没有定义,我给你一个默认的,再给LQD一个默认的。
#LQD=${lqdflying:+word}
说明:若若lqdflying变量未定义且非NULL,则返回其值,否则返回word的值,则返回word值,否则返回NULL;
用途:测试变量存在性,例如如果lqdflying已定义,则${lqdflying:+1}返回1
记忆:"+"表示"盖戳",看看lqdflying有没有料,有料,就盖个戳,这个戳就是word的值,然后返回LQD这个戳,要是lqdflying没有料,就返回NULL,告诉LQD一声说lqdflying这货没料。
附:如果:去掉,单纯是"-"、"+"、"=",则“若lqdflying变量未定义且非NULL”这句改为“若lqdflying变量未定义”,也就是说,lqdflying只要设置了就行,哪怕是设置成NULL。(以上内容由社区会员分享)
长按二维码关注公众号