2010-07-28 77 views
3

任何人都可以闡述## * /在UNIX Shell腳本中的工作方式。我已經看到它在Korn Shell中使用。它專門用於刪除文件的擴展名。## * /在UNIX Shell腳本中使用

例如 func_write_app_log的 「o刪除狀態文件$ {CIE_STATUS_FILE ## * /}」

這裏假設該文件是CIE_STATUS_FILE.DAT,那麼## * /顯示CIE_STATUS_FILE

+0

您可以刪除前綴和後綴匹配有這些構建模式。這些由POSIX指定並在許多shell中工作,例如, zsh,bash,ksh甚至普通的舊bourne shell(sh)。該參考文獻是http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02 – Jens 2011-08-29 13:30:08

回答

5

這也適用於Bash和描述here

$ {串##串}

刪除從$字符串前面的子串$最長匹配。

*是一個通配符,意思是匹配任何東西。您的示例從文件中刪除路徑,而不是擴展名。

 
$ bazfile='/foo/bar/baz.txt' 
$ echo ${bazfile##*/} 
baz.txt 

要刪除您要使用%擴展:

$ {字符串%子}

刪除從$字符串後面的子串$最短的匹配。

 
$ echo ${bazfile%.*} 
/foo/bar/baz