Bourne-Shell
如何解決路徑的正確結局?
我有一個持有這條路徑的 shell 變數
/usr/share/man/man1/bitmap.1
可能有一個名為 bitmap.1 的文件,但也可能是 bitmap.1.z、bitmap.1.gz、bitmap.1.Z。
現在我想將真實文件傳遞給一個函式,同時解析正確的文件,比如
function process { # do something } path="/usr/share/man/man1/bitmap.1" process ${path}.(z|Z|gz) # here the shell shall resolve the real filename
有沒有辦法優雅地做到這一點,或者我必須測試 bitmap.1、bitmap.1.z 等是否退出,然後將該文件傳遞給函式???
忘了說我僅限於 Bourne-Shell,所以手頭沒有 Brace Expansion -,-。
您仍然可以在 Bourne Shell 中進行 globbing
for f in ${given-path}*; do process $f done
盡可能多地編寫 shell 腳本以限制 Bourne shell 語法是個好主意;最大限度地提高便攜性。在許多情況下,它還可以提高速度。
如果您知道可能的副檔名列表,您可以執行以下操作:
process ${path}{,.Z,.Z,.gz}