取文件这个shell写法看不懂

chape 发布于 2013/05/07 11:35
阅读 290
收藏 1
a=/home/aguo/insert.test.sql 
a=${a%%.*} && a=${a##*/} && echo $a
加载中
0
inuxor
inuxor
$ a=/home/aguo/insert.test.sql

$ a=${a%%.*}

$ echo $a
/home/aguo/insert

$ a=${a##*/}

$ echo $a
insert

chape
chape
我自己查了下shell字符串截取,懂了,谢谢
chape
chape
${a%%.*} ,主要是没见过这种写法啊?能稍微讲讲吗?正则也不是这样写的吧,谢谢
0
枫爱若雪
枫爱若雪
正则里边貌似是取后缀以及前缀相关
0
inuxor
inuxor

这样也行

$ echo /home/aguo/insert.test.sql | cut -f1 -d. | cut -f4 -d/
insert

0
chape
chape

引用来自“inuxor”的答案

$ a=/home/aguo/insert.test.sql

$ a=${a%%.*}

$ echo $a
/home/aguo/insert

$ a=${a##*/}

$ echo $a
insert

${变量##*string}从左向右截取保留 最后一个string后的字符串
${变量#*string}从 左向右截取保留     第一个string后 的字符串
${变量%%string*} 从右向左截取保留    最后一个string后的字符串

${变量%string*}从右向左截取保留   第一个string后的字符串

$ a=/home/aguo/insert.test.sql 

$ a=${a%%.*} 

$ echo $a 
/home/aguo/insert 

$ a=${a##*/} 

$ echo $a 
insert 

0
inuxor
inuxor

引用来自“inuxor”的答案

$ a=/home/aguo/insert.test.sql

$ a=${a%%.*}

$ echo $a
/home/aguo/insert

$ a=${a##*/}

$ echo $a
insert

这不是正则。。。。

是bash字符串方法

http://bbs.chinaunix.net/thread-201843-1-1.html

返回顶部
顶部