Shell-Script

處理文件路徑中的空格

  • November 2, 2018

我有這個:

muh_dir=`cd $(dirname "$BASH_SOURCE") && pwd`

是的,我測試了上面的內容(它有反引號),但它不適用於 pwd 中的空格。另一方面,這更好:

muh_dir="$(cd $(dirname "$BASH_SOURCE") && pwd)"

我的問題是 - 這會在我的命令中添加 3 個字元,我的編輯器中的語法會發生變化。第一種方法要好得多..無論如何用較短的語法來處理空格還是我只是咬緊牙關?

您的兩個程式碼範例都將失敗:

muh_dir=cd $(dirname “$BASH_SOURCE”) && pwd muh_dir="$(cd $(dirname "$BASH_SOURCE") && pwd)"

您必須添加的最少引號是:

muh_dir=`cd "$(dirname "$BASH_SOURCE")" && pwd`
           ^                         ^             Note the quotes.

但是,請,請!,使用$(...)

muh_dir=$(cd "$(dirname "$BASH_SOURCE")" && pwd)

了解報價,然後使用更多報價™。這確實是你能做的最簡單的事情。

順便說一句,任何程式碼最重要的屬性是它的可維護性。字元數與可維護性的相關性非常微弱——將三個字元添加到 45 個(增加 6.7%)來處理空格甚至不會遠端觸發我的程式碼鼻子。

引用自:https://unix.stackexchange.com/questions/479267