如何将反斜杠参数传递给脚本?

时间:2016-03-01 11:59:22

标签: bash shell sh

我只想在文本文件中附加用户输入参数。我使用以下命令:

echo "$2" >> "./db.txt"

$2用户需要设置一条路径:D:\Projects\MyProject。它写入文件,但没有反斜杠。结果是:

  

d:ProjectsMyProject

我无法在任何地方找到解决方法。我尝试过使用-e-E参数(taken from here),但在这种情况下它似乎没什么区别。

2 个答案:

答案 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