2017-06-18 38 views
0

我盡我所能,以確保這不是重複,在這裏發現了許多類似的話題,但沒有一個似乎真正解決我的問題在這裏:路徑的grep包括逃脫的空間

在bash腳本我想使用類似

path="$HOME/dir\ with\ spaces"  
grep pattern "$path/file" 

這將返回:

grep: /home/user/dir\ with\ spaces/file: No such file or directory 

這是爲什麼? 當我在終端中嘗試相同的功能時,只要使用不帶引號的路徑,它就可以正常工作。但是,只要我使用引號,我會得到相同的錯誤。當然,在腳本中我需要引號,否則轉義不起作用。 我在做什麼錯?

回答

3

如果你寫這樣的,\將獲得包括字符串:

path="$HOME/dir\ with\ spaces" 

然後當你使用$path作爲文件名,外殼會尋找與\在文件這個名字,不僅僅是空格。

這樣寫:

path="$HOME/dir with spaces" 

或者:

path=$HOME/dir\ with\ spaces 

換句話說,你可以逃脫路徑名稱空間在兩個方面:

  • 使用\逃脫空格一個接一個
  • 附上entir e雙引號或單引號內的字符串
+0

非常感謝。 :) – oberon