LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 712|回复: 7

在看教程的时候打死也没想通的几个问题

[复制链接]
发表于 2003-11-24 21:26:19 | 显示全部楼层 |阅读模式
在STUDY-AREA下了SHELL的教程打印出来看
到shell变量过滤这里怎么也看不懂了。。
原文如下
如果,您想对一些变数值进行过滤,例如:MY_FILE=' ~/tmp/test.sh' ,而您想将变数值换成 test.sh (也就是将前面的路径去掉),那您可以将 $MY_FILE 换成 ${MY_FILE##*/}。这是一个变数值字串过滤:## 是用来比对变数前端部份,然後 */ 是比对的色样 (也就是任何字母到 / 之间),然後将最长的部份删除掉。您可以参考如下范例:

当 FNAME="/home/kenny/tmp/test.1.sh" 的时候:
变数名称         代表意思         结果
${FNAME}         显示变数值的全部。        


/home/kenny/tmp/test.1.sh

${FNAME##/*/}         比对变数值开端,如果以 /*/ 开头的话,砍掉最长的部份。        


                test.1.sh

${FNAME#/*/}         比对变数值开端,如果以 /*/ 开头的话,砍掉最短的部份。        


      kenny/tmp/test.1.sh

${FNAME%.*}         比对变数值末端,如果以 .* 结尾的话,砍掉最短的部份。        


/home/kenny/tmp/test.1   

${FNAME%%.*}         比对变数值末端,如果以 .* 结尾的话,砍掉最长的部份。        


/home/kenny/tmp/test     

${FNAME/sh/bash}         如果在变数值中找到 sh 的话,将第一个 sh 换成 bash。        


/home/kenny/tmp/test.1.bash

${FNAME//sh/bash}         如果在变数值中找到 sh 的话,将全部 sh 换成 bash。        


/home/kenny/tmp/test.1.bash


在这里,#的作用是什么,%的作用是什么,而我应该如何判断/*/ ,/* 等符号代表的是什么意思?
发表于 2003-11-24 21:39:36 | 显示全部楼层
试试不就行了
 楼主| 发表于 2003-11-24 21:53:33 | 显示全部楼层
我已经试过了。。。
但是还是搞不懂。。。。头大。。谁给点提示。。谢谢
发表于 2003-11-24 22:37:06 | 显示全部楼层
你说的是有关变量子串的扩展的问题!你搜索一下咱们shell版,有很多这样的例子和解释 ;)(不过今天的搜索似乎有些问题!)
你举的例子已经说得很清楚啦~~,你自己再多实践一下,比较一下,有些东西只有自己实验一下效果会更好的~~,努力吧!
发表于 2003-11-25 22:03:06 | 显示全部楼层
正则表达式?
发表于 2003-11-26 00:32:58 | 显示全部楼层
glob
发表于 2003-11-26 10:09:50 | 显示全部楼层
怎么这些同志都不知道看man bash呢!?从论坛里搜索也可以呀。
 楼主| 发表于 2003-11-26 13:25:13 | 显示全部楼层
英文不是很好。。。再则前几天论坛搜索不起。。只有上来发问了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表