如何在命令行中跳过对&符号的评估?


13

在命令行中输入Google Maps Directions URL时(用于通过Terminal用Chrome浏览器打开&),URL中有一个&符号,但是由于Unix是Unix的东西,终端在这里将其断开。我可以在终端中键入一些内容,以便在命令实际通过时将其视为与符号吗?

威尔 工作?

Answers:


15

您需要在引号中加上地址:

chromium-browser 'http://whatever.com/?x=1&y=2'

好的,我在结尾处加上了引号,但前面没有引号。谢谢。
Leron

7

引号可以解决此问题,但您也可以使用反斜杠将其转义:

echo http://whatever.com/?x=1\&y=2

无论如何,这并不是说更好,这只是这种情况的另一种选择。


1

在这种情况下,实际上并不重要,但是单引号和双引号之间是有区别的。

双引号将替换特殊字符(例如'$'和引号),而单引号将按字面意义处理所有内容,但右引号除外。

两者都会将文本分组在一起,这使得铬将其视为一个自变量,而像“;#&”这样的字符在该上下文中没有特殊含义。

这显示了使用'\'来在双引号中转义双引号,以及反斜杠本身:

mat@sen:~$ echo "a&bc\\#de\"f"
a&bc\#de"f

用单引号没有改变:

mat@sen:~$ echo 'a&bc\\#de\"f'
a&bc\\#de\"f

不带引号的'&'将其分为两个命令:

mat@sen:~$ echo a&bc\\#de\"f
[1] 2619
a
bc\#de"f: command not found
[1]+  Done                    echo a
[1]+  Done                    echo a

通常,在处理一种报价时,您可以将其包装在另一种报价中,但是您可能会遇到以下问题:

mat@sen:~$ echo "'a'bc$foo"
'a'bc

单引号不会被替换,但是“ $”会被替换。但是,以下语法适用:

mat@sen:~$ echo $'a\'bc$foo'
a'bc$foo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.