查看原文
其他

看脚本会用到的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。以上内容由社区会员分享)


长按二维码关注公众号

继续滑动看下一个

看脚本会用到的Linux和Unix下的变量运算符

向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存