shell脚本处理备忘

PLUGIN_DOC="/A/B.tar.gz"

#获取文件名,包含扩展名B.tar.gz
DOC_FILE_BASENAME=`basename ${PLUGIN_DOC}`
#获取文件名,去除扩展名
DOC_FILE=${DOC_FILE_BASENAME%.tar.gz}
#将文件名中的特殊符号"-" "." "_" "0到9"之间的数字删除掉,比如有些文件名上带有版本号
BASE_NAME=`echo ${DOC_FILE} | sed 's/[-._0-9]//g'`

使用-z或-n判断字符串变量时,必须要用""把变量引起来。

变量内容修改
file=/dir1/dir2/dir3/my.file.txt
可以用 ${ }获取变量中的一部分内容:"#"符号表示从变量的开头扫描,"%"表示从变量的尾部开始扫描

其中双符号都表示最大匹配,单符号表示一次匹配。
${file#*/}: 拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt
${file#*.}: 拿掉第一个 . 及其左边的字符串:file.txt
${file##*.}:拿掉最后一个 . 及其左边的字符串:txt
${file%/*}: 拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)
${file%.*}: 拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
${file/.txt/.cpp} 将.txt取代为.cpp:/dir1/dir2/dir3/my.file.cpp


# 自己编译VIM的参数配置
VIM_CFG_PARAM="--with-features=huge \
--enable-rubyinterp=yes \
--enable-pythoninterp=yes \
--enable-luainterp=yes \
--enable-perlinterp=yes \
--enable-multibyte \
--enable-sniff \
--enable-fontset \
--enable-cscope \
--disable-gui \
--with-python-config-dir=/usr/local/lib/python2.7/config -q"

#ctags版本号获取处理
CTAGS_VERSION=`ctags --version | grep "Ctags" | awk '{print $3}' | sed 's/,//' | awk -F. '{print $1 $2}'`

#cscope版本号获取处理,注意需要将标准错误重定向到标准输出上,因为这个版本号是通过标准错误给出的。
CSCOPE_VERSION=`cscope -V 2>&1| sed 's/[^0-9]//g'`

#python版本号获取处理,同样将非数字字母删除掉,如此就可以得到一个数字进行版本比较处理了。
PYTHON_VERSION=`python -V 2>&1 | sed 's/[^0-9]//g'`

posted on 2013-08-16 15:47  eric.geoffrey  阅读(178)  评论(0编辑  收藏  举报

导航