2011-02-11 185 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 

注意,因为他们不是活得这不会逃避斜线通常是特殊字符。