我对Linux系统有点陌生,所以我希望能得到任何帮助。也许我忽略了一些简单的东西。我喜欢循环通过一些变量,但在执行时我总是得到这个错误
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
我使用过类似的文件,它们都工作得很好。(以及改变文件的模式)。
1条答案
按热度按时间li9yvcax1#
如此处所示,
for s2
行被分成3行,使字符串20_0_200-75-20_0_200.Ni10Nj11
(来自错误消息)单独位于一行中,并且由于解析器正在查找do
(在for s2 ...
行之后),因此您会得到错误消息re:***(即,=)。有几个选择...
在前两行末尾添加一个连续字符(
\
),例如:或者,您可以将所有这些字符串/名称拉到主行中,例如:
如果你遇到其他的问题,考虑剪切粘贴你的代码(和shebang沿着)到shellcheck.net;这在解决常见的编码/语法问题方面做得很好。
另一个可能需要检查的问题是...您已经标记了问题
bash
,但您的shebang(/bin/sh
)表明您可能没有使用bash
(即,sh
与bash
不同);虽然您的系统可能已经将/bin/sh
重新定义为bash
的符号链接或副本,但这并不常见;您将需要验证所使用的shell,因为这将决定您在将来编写的代码中某些命令的语法。