[root@master ssh]# path=${PATH}
[root@master ssh]# echo $path
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/java/jdk1.6.0_30//bin:/usr/local/hadoop/bin:/root/bin
[root@master ssh]# echo ${path#/*qt-3.3/bin:} (删除/usr/lib/qt-3.3/bin:)
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/java/jdk1.6.0_30//bin:/usr/local/hadoop/bin:/root/bin
[root@master ssh]# echo ${path#*:}
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/java/jdk1.6.0_30//bin:/usr/local/hadoop/bin:/root/bin
[root@master ssh]# echo ${path##/*:}
/root/bin
从头删除掉目录就是介于/ 到:之间的数据。但是PATH中不止一个冒号:,所以#: 代表 :符合替换文字的“最短”那一个。##:代表符合替换文字”最长“那一个。
[root@master ssh]# echo ${path%:*bin}
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/java/jdk1.6.0_30//bin:/usr/local/hadoop/bin
[root@master ssh]# echo ${path%%:*bin}
/usr/lib/qt-3.3/bin
从后向前删除
例如: root的mail 是/var/spool/mail/root
[root@master ssh]# echo ${MAIL##/*/}
root
[root@master ssh]# echo ${MAIL%/*}
/var/spool/mail
替换,将path的变量sbin替换成SBIN
echo ${path/sbin/SBIN} (替换一个) ; echo ${path//sbin/SBIN} (全部替换)
${变量#关键词} 若变量内容从头开始的数据符合”关键词“,则将符合的最短数据删除
${变量##关键词}若变量内容从头开始的数据符合”关键词“,则将符合的最长数据删除
${变量%关键词}若变量内容从尾向前的数据符合”关键词“,则将符合的最短数据删除
${变量%%关键词}若变量内容从尾向前的数据符合”关键词“,则将符合的最长数据删除
${变量/旧字符串/新字符串}若变量内容符合”旧字符串“,则第一个旧字符串会被新字符串替换
${变量//旧字符串/新字符串}若变量内容符合”旧字符串“,则全部的旧字符串会被新字符串替换
阅读(1028) | 评论(0) | 转发(0) |