当前位置: 首页 > 知识库问答 >
问题:

bash中的“语法错误接近意外的标记'elif'”错误

翟永春
2023-03-14

我写了一个脚本,脚本的一部分如下:

#!/bin/bash

if [ "$1" == "this_script" ] then
      this_script --parameters
elif [ "$1" == "other_script" ] then
      other_script --parameters
else
      echo "missing argument"
fi

当我运行这个脚本时,我得到了错误,

syntax error near unexpected token `elif'
`elif [ "$1" == "SWDB" ] then'

1)行尾有问题吗?我在 Windows 上使用记事本编写了脚本,但我在编辑为 UNIX/OSX 格式下启用了 EOL 转换。

2)如果不是行尾,是什么错误?

我正在Redhat Linux操作系统上的bash shell中运行此脚本。

共有2个答案

宇文修文
2023-03-14

“then”语句应该在新行上:

#!/bin/bash

if [ "$1" == "this_script" ]
then
    this_script --parameters
elif [ "$1" == "other_script" ]
then
    other_script --parameters
else
    echo "missing argument"
fi

以这种格式对我有用。

郭恩
2023-03-14

你需要在 if [ ... ] 之后和之前使用分号,与 elif 相同:

if [ "$1" == "this_script" ]; then
#                           ^
#                           here!
#                              v
elif [ "$1" == "other_script" ]; then

摘自Bash手册——3.2.4.2条件结构:

if命令的语法为:

if test-commands; then
  consequent-commands;
[elif more-test-commands; then
  more-consequents;]
[else alternate-consequents;]
fi

执行< code >测试命令列表,如果其返回状态为零,则执行< code >结果命令列表。如果< code>test-commands返回非零状态,则依次执行每个< code>elif列表,如果其退出状态为零,则执行相应的< code>more-consequents并完成命令。如果存在' < code > else alternate-consequents ',并且final if或< code>elif子句中的最后一个命令具有非零退出状态,则执行< code > alternate-consequents 。返回状态是最后执行的命令的退出状态,如果没有条件测试为真,则返回零。

 类似资料:
  • 我正在使用一种新的语言,我想它是linux,但老实说,我不知道;我们通过一个名为putty的程序连接到某个服务器来进行编程。作为作业的一部分,我必须创建一个计算器程序,以两个数字和一个运算符作为分段,但我得到了一堆意想不到的令牌错误。我很迷茫,我的课文和我的教授都没有帮助 到目前为止,我只是想得到它,这样我就可以从命令中得到2/calc.sh 1 1但我在第20行中不断遇到意外的标记错误

  • 问题内容: 我正在尝试与Jenkins构建过程一起运行以下Shell命令 现在构建失败 但是奇怪的是,当直接在Jenkin从站上运行此命令时,它可以正常工作。 如您所见,Jenkins也运行shell命令 。 任何帮助将不胜感激,因为我努力了几个小时 问题答案: 是由启用的扩展模式。目前尚不清楚如何在您的Jenkins从站中启用它,但是将命令添加到脚本中应该可以解决您的问题。

  • 问题内容: 我在Mac上写了一个示例脚本 通过显示Example可以正常工作 当我在RedHat机器上运行此脚本时,它说 意外令牌附近的语法错误’ 我检查了bash是否可用 有人遇到过同样的问题吗? 提前致谢 ! 问题答案: 这可能是文件编码问题。 在不同操作系统和编辑器之间处理文件时遇到了文件类型编码问题,在我的情况下,尤其是在Linux和Windows系统之间。 我建议检查文件的编码,以确保它

  • 问题内容: 问题答案: 您要在UNIX命令提示符下键入此命令吗?您应该在python环境中执行此操作,即。在提示符下键入,然后从那里开始。 另外,在Python行的末尾不需要

  • 问题内容: 运行此脚本 给出错误: cleanup.bash:第10行:意外令牌’(’附近的语法错误 cleanup.bash:第10行:’rm -rf!(composer.json | .git)’ 但是如果我直接在终端中运行没问题 我试着去掉所有其他行,仍然得到错误。 如何在bash脚本中正确输入? 问题答案: 我猜您的问题是由于从脚本运行时未设置shell扩展glob选项。当您声称它可以在命

  • 我在我的ReactJS应用程序上得到一个意外的令牌。但是我相信语法是正确的。 ./src/组件/身份验证/索引中的错误.js模块生成失败: 语法错误: 意外的标记 (11:11) 我错过了什么? 这是我的webpack.config.js 。巴伯尔克