鸟哥实例练习
变量设置方式
说明
${变量#关键字}
若变量内容从头开始的数据符合“关键字”,则将符合的最短数据删除
${变量##关键字}
若变量内容从头开始的数据符合“关键字”,则将符合的最短数据删除
${变量%关键字}
若变量内容从尾向前的数据符合“关键字”,则将符合的最短数据删除
${变量%%关键字}
若变量内容从尾向前的数据符合“关键字”,则将符合的最长数据删除
${变量/旧字符串/新字符串}
若变量内容符合“旧字符串”,则第一个旧字符串会被新字符串替换
${变量//旧字符串/新字符串}
若变量内容符合“旧字符串”,则全部的旧字符串会被新字符串替换
设置个变量用于练习
[root@piero ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@piero ~]# export path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
[root@piero ~]# echo $path
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
删除: # ,##,%,%%,* 等配合echo ${variable}
# echo ${path#/*sbin:}
/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#代表内容变量的最前开始向右删除,由/开始,*表示通配符0到无穷个字符
# echo ${path#/*:}
/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#最短匹配
# echo ${path##/*:}
/root/bin
##最长匹配
# echo $path
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# echo ${path%/root/*}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
%从右往左匹配
echo ${path%/*/sbin*}
/usr/local/sbin:/usr/local/bin:
echo ${path%%/*/sbin*}
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# echo $MAIL
/var/spool/mail/root
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# echo ${MAIL#/*/}
spool/mail/root
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# echo ${MAIL%/*}
/var/spool/mail
替换:
# echo ${path/sbin/SBIN}
/usr/local/SBIN:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# echo ${path//sbin/SBIN}
/usr/local/SBIN:/usr/local/bin:/usr/SBIN:/usr/bin:/root/bin
关于-
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# unset str;var=${str-newvar}
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# echo var=${var} str=${str}
var=newvar str=
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# str="oldvar";var=${str-newvar}
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# echo var=${var} str=${str}
var=oldvar str=oldvar
var的值取决于str是否存在,-并不影响旧变量的内容
关于+
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# unset str;var=${str+mewvar}
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# echo var=${var} str=${str}
var= str=
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# str=oldvar;var=${str+newvar}
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# echo var=${var} str=${str}
var=newvar str=oldvar
关于=
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# unset str;var=${str=newvar}
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# echo var=${var} str=${str}
var=newvar str=newvar
会替换旧变量的值
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# str=oldvar;var=${str=newvar}
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# echo var=${var} str=${str}
var=oldvar str=oldvar
变量测试
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# str="oldvar";var=${str?test}
[root@iZwz96z5n0mtqtsen3cfs9Z mj]# echo var=${var} str=${str}
var=oldvar str=oldvar