我只想在文本文件中附加用户输入参数。我使用以下命令:
echo "$2" >> "./db.txt"
$2
用户需要设置一条路径:D:\Projects\MyProject
。它写入文件,但没有反斜杠。结果是:
d:ProjectsMyProject
我无法在任何地方找到解决方法。我尝试过使用-e
或-E
参数(taken from here),但在这种情况下它似乎没什么区别。
答案 0 :(得分:4)
你必须在shell中转义反斜杠:\\
,或者将字符串放在引号中。
出于调试目的,请使用set -x
。
答案 1 :(得分:0)
echo 'foo\bar\baz'
会显示foo\bar\baz
当您的参数完全不使用引号时,某些字符具有特殊含义,例如$
表示$HOME
中的变量。 Space是参数分隔符,因此如果你想将它作为一个参数传递,你也必须转义它。
您可以使用strong quoting来引用backslaches(例如'foo\bar'
)。在强引号字符串中,唯一具有特殊含义的字符是'
,这意味着如果要将其放入屏幕中,它是唯一必须转义的字符。
因此echo 'foo\bar\baz'
会显示foo\bar\baz