Linux中#和%号在参数替换结构中的作用

来源:互联网 发布:linux 打开控制台 编辑:程序博客网 时间:2024/05/29 03:03

问题来源:
echo PATHecho{PATH#*:}
echo ${PATH##*:}
问题:一个#与两个#有输出会有什么区别?以上三条命令会有什么区别?


[root@oracledb 桌面]# echo $PATH

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

[root@oracledb 桌面]# echo ${PATH#*:}

/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

[root@oracledb 桌面]# echo ${PATH##*:}

/root/bin

设a=dir1/dir2/dir3/my.file.txt
则:
echo {a#*/}   输出结果为   dir2/dir3/my.file.txt  ——删除第一条 / 左侧的字符串  
echo
{a##*/} 输出结果为 my.file.txt ——删除最后一条 / 左侧的字符串
echo {a#*.}   输出结果为  file.txt   ——删除第一个 . 左侧的字符串  
echo
{a##*.} 输出结果为 txt ——删除最后一个 . 左侧的字符串

echo {a%/*}     dir1/dir2/dir3  
echo
{a%%/*} dir1
echo {a%%.*}   dir1/dir2/dir3/my  
echo
{a%.*} /dir3/my.file

总结: #是从左向右匹配 %是从右向左匹配
##是最长匹配 # 是最短匹配
%%是最长匹配 %是最短匹配

0 0
原创粉丝点击