#测试环境
localhost:/home/shell # echo $PATH
/usr/java/jdk1.6.0_27/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:
/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin
${变量#关键词} 若变量内容从头开始的数据符合『关键词』,则将符合的最短数据删除
localhost:/home/shell # echo ${PATH#/*/bin:}
/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:
/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin
#删除开头从/开始匹配任意个字符到/bin:结束位置的最短匹配数据
${变量##关键词} 若变量内容从头开始的数据符合『关键词』,则将符合的最长数据删除
localhost:/home/shell # echo ${PATH##/*/bin:}
/usr/lib/mit/sbin
#删除开头从/开始匹配任意个字符到/bin:结束位置的最长匹配数据
${变量%关键词} 若变量内容从尾向前的数据符合『关键词』,则将符合的最短数据删除
localhost:~ # echo ${PATH%:*bin}
/usr/java/jdk1.6.0_27/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:
/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin
${变量%%关键词} 若变量内容从尾向前的数据符合『关键词』,则将符合的最长数据删除
localhost:~ # echo ${PATH%%:*bin}
/usr/java/jdk1.6.0_27/bin
${变量/旧字符串/新字符串} 若变量内容符合『旧字符串』则『第一个旧字符串会被新字符串取代』
localhost:~ # echo ${PATH/bin/BIN}
/usr/java/jdk1.6.0_27/BIN:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:
/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin
${变量//旧字符串//新字符串} 若变量内容符合『旧字符串』则『全部旧字符串会被新字符串取代』
localhost:~ # echo ${PATH//bin/BIN}
/usr/java/jdk1.6.0_27/BIN:/sBIN:/usr/sBIN:/usr/local/sBIN:/root/BIN:/usr/local/BIN:/usr/BIN:/BIN:
/usr/BIN/X11:/usr/X11R6/BIN:/usr/games:/usr/lib/mit/BIN:/usr/lib/mit/sBIN
本文介绍了如何在Shell脚本中使用特殊语法来操作PATH变量。通过${变量#关键词}、${变量##关键词}、${变量%关键词}、${变量%%关键词}删除变量开头或结尾匹配的部分,以及使用${变量/旧字符串/新字符串}和${变量//旧字符串/新字符串}来替换变量中的旧字符串。这些技巧对于清理或修改PATH变量的值非常实用。
3691





