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