意外的令牌



我对Linux系统有点陌生,所以我非常感谢这里的任何帮助。也许我忽略了一些简单的东西。我是for循环通过一些变量,我一直得到这个错误时,执行

line 8: syntax error near unexpected token `20_0_200-75-20_0_200.Ni10Nj11'
line 8: `20_0_200-75-20_0_200.Ni10Nj11 20_0_200-80-20_0_200.Ni00Nj10 20_0_200-80-20_0_200.Ni11Nj01'

这是卡住的循环。

#!/bin/sh
#
#
#
for s1 in new new1
do
for s2 in 20_0_200-75-20_0_200.Ni10Nj10 20_0_200-80-20_0_200.Ni00Nj00 20_0_200-80-20_0_200.Ni10Nj11
20_0_200-75-20_0_200.Ni10Nj11 20_0_200-80-20_0_200.Ni00Nj10 20_0_200-80-20_0_200.Ni11Nj01
20_0_200-75-20_0_200.Ni11Nj10 20_0_200-80-20_0_200.Ni10Nj10
do

我用过类似的文件,它们都工作得很好。(以及改变文件的模式)。

如这里所示,for s2行被分成3行,留下字符串20_0_200-75-20_0_200.Ni10Nj11(来自错误消息)独自坐在一行上,并且由于解析器正在寻找do(跟随for s2 ...行),您得到错误消息re:unexpected token(即20_0_200-75-20_0_200.Ni10Nj11!=do)。

A couple options…

在前两行末尾添加一个连续字符(),例如:

for s2 in 20_0_200-75-20_0_200.Ni10Nj10 20_0_200-80-20_0_200.Ni00Nj00 20_0_200-80-20_0_200.Ni10Nj11 
20_0_200-75-20_0_200.Ni10Nj11 20_0_200-80-20_0_200.Ni00Nj10 20_0_200-80-20_0_200.Ni11Nj01 
20_0_200-75-20_0_200.Ni11Nj10 20_0_200-80-20_0_200.Ni10Nj10
do

或者您可以将所有这些字符串/名称拉到主线中,例如:

for s2 in 20_0_200-75-20_0_200.Ni10Nj10 20_0_200-80-20_0_200.Ni00Nj00 20_0_200-80-20_0_200.Ni10Nj11 20_0_200-75-20_0_200.Ni10Nj11 20_0_200-80-20_0_200.Ni00Nj10 20_0_200-80-20_0_200.Ni11Nj01 20_0_200-75-20_0_200.Ni11Nj10 20_0_200-80-20_0_200.Ni10Nj10
do

这应该能帮你解决当前的问题。如果你遇到任何其他问题,并有问题解决考虑剪切-n-粘贴你的代码(连同shebang)到shellcheck.net;这可以很好地找出常见的编码/语法问题。


另一个你可能想要回顾的问题…你已经标记了问题bash,但你的shebang (/bin/sh)建议你可能不使用bash(即shbash不一样);虽然您的系统可能已将/bin/sh重新定义为指向bash的符号链接或副本,但这并不常见;您将需要验证您正在使用哪个shell,因为这将决定您将来编写的代码中某些命令的语法。

相关内容

  • 没有找到相关文章

最新更新