【问题标题】:bash syntax error report format (basic)bash 语法错误报告格式(基础)
【发布时间】:2012-02-02 14:26:09
【问题描述】:

Shell 脚本的新手我注意到意外令牌的语法错误报告具有以下格式

`unexpectedtoken' # ie backtick unexpected_token singlequote

反引号和单引号代表什么?它们不存在于脚本本身中。 它们与外壳有关,但是什么?

更具体地说,我目前从同一行收到两个错误报告,这应该有助于我的调试尝试,但我不知道如何解释它们。该脚本有一个参数被传递给一个函数。

append2file \
"(common params for all samples; exemplar: ${monoArr2[@]:(-1)})" 

参数行 (line154) 上的第一个括号是意外标记。这也会触发第二次错误报告。

./process_v7.sh: line 154: syntax error near unexpected token `('
./process_v7.sh: line 154: `        "(common params for all read_2 samples; exemplar: ${monoArr2[@]:(-1)})" \'

前导反引号和双引号字符串开头之间的间距必须告诉我一些有助于我调试的信息,但是什么??? TIA

M

【问题讨论】:

  • 您上面的代码很好,假设第 153 行的 \ 之后没有空格,并且第 152 行不以 \ 结尾。语法错误可能是由第 140-152 行中的代码引起的。显示更多。
  • 解决了!我使用 vi 从第 154 行搜索 double_quotes 并在脚本的前面找到了一个流浪者。感谢威廉的提示。

标签: shell syntax


【解决方案1】:

定义函数的语法是:

附加文件(){ # 一些通过 $1、$*、$@ 等引用参数的代码 }

听起来你在 () 里面放了一些东西。不要那样做。

【讨论】:

  • @WPursell:谢谢,函数定义OK,但是调用确实看起来有误导性;它传入一个字符串参数,该参数本身包括封闭的括号。如此误导,虽然电话看起来实际上没问题。
猜你喜欢
  • 1970-01-01
  • 2013-11-28
  • 2019-10-10
  • 2011-12-24
  • 2012-05-10
  • 1970-01-01
  • 2013-08-01
  • 2013-12-30
  • 1970-01-01
相关资源
最近更新 更多