0
我想从用户输入的字符串生成文件名,并确保它安全地转义。转义文件名斜杠
例如,如果用户输入/usr/bash
输出将是\/usr\/bash
并且如果输入是The great theater
输出是The\ great\ theater
。
我想从用户输入的字符串生成文件名,并确保它安全地转义。转义文件名斜杠
例如,如果用户输入/usr/bash
输出将是\/usr\/bash
并且如果输入是The great theater
输出是The\ great\ theater
。
您确定需要这样做吗?这是一种代码味道。很可能有更好的方法来做任何你想做的事情,而不是改变你的输入。当您使用它们正确地引用您的变量已经足够:
$ 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
注意,因为他们不是活得这不会逃避斜线通常是特殊字符。
你真的*试图做什么? – 2011-02-11 04:11:15
-1没有详细说明需要转义的内容,更重要的是,为什么。 – chepner 2012-06-17 01:06:45