2012-01-23 39 views
1

我有一個包含以下行的腳本:猛砸路徑問題

propFile="${0%/*}/anteater.properties" 
  1. 什麼是 「$ {0%/ *}」 是什麼意思?
  2. 此命令給出了腳本的路徑 - 但路徑中有空格,腳本找不到此文件 - 如何處理它?

回答

2

%運算符在變量擴展中刪除了給定的匹配後綴模式。因此${0%/*}採用變量$0,並在最後刪除所有匹配的/*。這相當於命令dirname,它在給定路徑時返回該路徑的父目錄。

爲了處理bash變量中的空格,只要展開變量(即,無論何時寫入$var),都應該引用它。總之,總是使用"$var"而不是隻有$var

考慮在bash手冊中閱讀shell parameter expansionvariable quoting以瞭解有關這兩個主題的更多信息。

1
  1. 去掉後綴匹配/*,即最後一個斜線之後的一切,包括斜槓本身。

  2. 無論你在哪裏使用它(cat "$propFile")都會引用它。

+0

引用絕對有效。然而,如果你想直接引用一個帶有空格的文件名,你可以用\字符來轉義你的空格。 – asf107

+0

@ asf107,如果你想每次都想引用一個存放在變量中的文件名 - 引用它。以防萬一。 –