首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决“意外令牌”的语法错误?

如何解决“意外令牌”的语法错误?
EN

Stack Overflow用户
提问于 2019-08-16 13:00:53
回答 1查看 896关注 0票数 1

我正在尝试配置一个名为ZeroTier的虚拟专用网,以便在Raspberry Pi上运行。用于安装的Bash脚本是:

代码语言:javascript
复制
curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' | gpg --import && \ if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

这让我觉得:

-bash:语法错误,接近意外标记“那么”

我在;之前和之后使用了当时的位置和空格,然后放在分号上,将$z上的单引号和其他一些东西更改为单引号。我迷路了,也不明白为什么这个脚本不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-16 13:25:19

此错误是由于脚本中的\出现在&&之后造成的。

反斜杠转义下一个字符,使其不被shell解释。如果下一个字符是换行符,则shell将不会将换行符解释为命令的结尾。它有效地允许命令跨越多行。还请注意,在以这种方式拆分的行中,没有任何东西(甚至不是注释或单个空格)可能会跟随\

例如,ls; \ if true; then echo "Hi"; fi;也会产生与您的错误相同的错误,但是如果您将相同的错误按下面的方式放入脚本中,则不会产生错误。

代码语言:javascript
复制
ls; \
if true; then echo "Hi"; fi;

正如@glenn-jackman下面的评论所指出的,bash对then有问题的原因是没有前面的if,而是有一个名为" if"的命令。

此外,在脚本中,您不需要在\之后使用&&。在明显存在未终止命令(&&, ||, |, &, ;)的一些上下文中,换行符被忽略。有关更多信息,请参见here

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57525143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档