2013-05-08 36 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