2013-05-08 86 views
28

操作字符串时,bash中的百分号表示什么?例如,${0%/*}是什么意思?Bash:使用字符串操作(百分号)

+11

您可以在http://tldp.org/LDP/abs/html/refcards.html#AEN22664 – fedorqui 2013-05-08 15:01:51

+1

中查看它的新链接到“字符串操作”文档:http://tldp.org/LDP/abs/html /refcards.html#AEN22828 – 2016-08-07 19:40:04

回答

27

如果您使用@ fedorqui的资源,您会看到它将从第一个位置参数的末尾去除最短匹配/*。示例:

example_foo(){ 
    echo ${1%/*} 
} 

example_foo path/to/directory/sub_directory 
# => path/to/directory 

在示例中,我使用了第二个位置参数,因为第一个是函数的名称。

+1

把所有东西放在一起并给出一个很好的例子。 – fedorqui 2013-05-08 15:10:39

+2

为了解决原始问题,'$ 0'是正在执行的脚本的完整路径名;给定的表达式会剥离路径的最终组件,所以它大致等同于'dirname $ 0'。 – chepner 2013-05-08 15:24:19

+0

据我所知,示例中的'1'表示命令的第二个片段,从0开始计数。 – 2014-08-29 12:40:59