Bash 脚本:意外标记附近的语法错误?

Posted

技术标签:

【中文标题】Bash 脚本:意外标记附近的语法错误?【英文标题】:Bash script: syntax error near unexpected token? 【发布时间】:2015-03-31 02:06:20 【问题描述】:
function nvis()

    while true; do
    nvidia-smi
    sleep $1 
    done

我正在尝试像这样使用它:

nvis 2

我收到如下错误:

bash: syntax error near unexpected token `2'

对不起,如果这很明显;我有点难过。

【问题讨论】:

这类似于:***.com/questions/1289026/…,但他们不接受命令行参数,这似乎是我的问题 请写一个概括具体问题的标题。例如:为什么那个 bash 函数不需要参数?或类似的东西。 这是怎么回事?由于某种原因它不需要参数?我在其他 bash 函数中使用了类似的语法,没有问题.... $1 是第一个命令行参数,不是吗?我更改了标题,但我不确定最具有描述性的内容是什么。 您的功能非常好。请发布整个脚本。 用你的脚本试试shellcheck.net。 【参考方案1】:

根据您的信息,错误是不可重现的。这工作正常:

#!/bin/bash

function nvis()

  while true; do
    echo nvidia-smi
    sleep $1 
  done


nvis 2

【讨论】:

【参考方案2】:

我也尝试了您的代码 - 工作正常。我猜您的文件包含“隐藏”控制代码。试试:

cat -v yourfile  # OR
cat -vE yourfile

看到任何特殊代码了吗? - 删除它们

另外,试试:

bash -nv yourfile

:)

【讨论】:

以上是关于Bash 脚本:意外标记附近的语法错误?的主要内容,如果未能解决你的问题,请参考以下文章

原因:意外标记“fi”附近的 Bash 语法错误

意外标记 `' ` 附近的语法错误

Bash 脚本中意外标记“if”附近的语法错误

GDRIVE:意外标记“换行符”附近的语法错误

hadoop 3.1.2 ./start-all.sh 错误,意外标记 `<' 附近的语法错误

语法错误:bash 脚本中的“fi”意外(预期“then”)