${parameter%word}
${parameter%%word}
The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches a
trailing portion of the expanded value of parameter, then the result of the expansion is the expanded
value of parameter with the shortest matching pattern (the ''%'' case) or the longest matching pattern
(the ''%%'' case) deleted. If parameter is @ or *, the pattern removal operation is applied to each
positional parameter in turn, and the expansion is the resultant list. If parameter is an array vari-
able subscripted with @ or *, the pattern removal operation is applied to each member of the array in
turn, and the expansion is the resultant list.
${parameter/pattern/string}
The pattern is expanded to produce a pattern just as in pathname expansion. Parameter is expanded and
the longest match of pattern against its value is replaced with string. If Ipattern begins with /, all
matches of pattern are replaced with string. Normally only the first match is replaced. If pattern
begins with #, it must match at the beginning of the expanded value of parameter. If pattern begins
with %, it must match at the end of the expanded value of parameter. If string is null, matches of pat-
tern are deleted and the / following pattern may be omitted. If parameter is @ or *, the substitution
operation is applied to each positional parameter in turn, and the expansion is the resultant list. If
parameter is an array variable subscripted with @ or *, the substitution operation is applied to each
member of the array in turn, and the expansion is the resultant list.
其实之前已经见过它的用法,但是突然发现用的时候还是不熟练啊,下面有个例子,大家可以看看~
getdeploylist(){
if [ -n "$1" ]
then
applist=(`ls $1`)
#if [ ! -z "$applist" ]
#then
# echo "the directory is no file to prepare ......"
# exit 1 ;
#fi
listsize=${#applist[*]}
for ((i=0;i<$listsize;i++))
do
appname=${applist[i]}
echo "prepare $appname ...."
echo " "
names=(`echo ${appname/-/ }`)
filetype="${appname##*.}"
echo "0: ${names[0]} 1: ${names[1]} 2: ${names[2]} file type: $filetype"
cp $1$appname $1${names[0]}.$filetype
done
else echo "please input directory."
fi
}
getdeploylist $1
ps:
假如你想要得到解压后的包名称,那么你就得修改了,echo ${appname%.*}