2011-02-11 95 views
0

我想從用戶輸入的字符串生成文件名,並確保它安全地轉義。轉義文件名斜槓

例如,如果用戶輸入/usr/bash輸出將是\/usr\/bash 並且如果輸入是The great theater輸出是The\ great\ theater

+2

你真的*試圖做什麼? – 2011-02-11 04:11:15

+0

-1沒有詳細說明需要轉義的內容,更重要的是,爲什麼。 – chepner 2012-06-17 01:06:45

回答

5

您確定需要這樣做嗎?這是一種代碼味道。很可能有更好的方法來做任何你想做的事情,而不是改變你的輸入。當您使用它們正確地引用您的變量已經足夠:

$ file='some file name.txt' 
$ touch "$file" 
$ ls "$file" 
some file name.txt 

如果你堅持,雖然,使用%q格式的printf:

$ str='The great theater' 
$ printf '%q\n' "$str" 
The\ great\ theater 
$ escaped=$(printf '%q' "$str") 
$ echo "$escaped" 
The\ great\ theater 

注意,因爲他們不是活得這不會逃避斜線通常是特殊字符。