2007-06-29

用${}过滤变量

${}用于过滤变量的值有时候非常方便,不过每次用都记不住,只好写个例子在此供翻查:(提醒一下,别与命令替换操作符 $(command) 搞混了!另外在XSLT中可以用{$var}来得到一个变量的值)

假设 FNAME="/home/jia/tmp/test.1.sh"

那么有:

${FNAME}
显示变量的全部。

/home/jia/tmp/test.1.sh

${FNAME##/*/}
比对变量開端﹐如果以 /*/ 开头的話﹐砍掉最長的部份。

test.1.sh

${FNAME#/*/}
比对变量开端﹐如果以 /*/ 开头的話﹐砍掉最短的部份。

jia/tmp/test.1.sh

${FNAME%.*}
比对变量末端﹐如果以 .* 結尾﹐砍掉最短的部份。

/home/jia/tmp/test.1

${FNAME%%.*}
比对变量末端﹐如果以 .* 結尾﹐砍掉最长的部份。

/home/jia/tmp/test

${FNAME/sh/bash}
如果在变量中找到 sh ﹐將第一个 sh 替换为 bash。

/home/jia/tmp/test.1.bash

${FNAME//sh/bash}
如果在变量中找到 sh ﹐將全部 sh 替换为 bash。

/home/jia/tmp/test.1.bash

简单总结:

# 比对变量的的开始部分

% 比对变量的结束部分

一个符号表示去掉最短的部分,两个符号表示去掉最长的部分。

没有评论:

发表评论