【问题标题】:Bash syntax error near unexpected token `done'意外标记“完成”附近的 Bash 语法错误
【发布时间】:2015-05-10 23:17:36
【问题描述】:

这个文件是用 bash 编写的。当我运行它时,我得到了这个错误:

./q: line 7: syntax error near unexpected token `done'
./q: line 7: `done '**strong text**

代码是:

nohup echo ELMAYET > /dev/null 2> /dev/null && 
if curl -m5 -s --insecure "$1/test/final" | grep "phpshell" > /dev/null;
 then 
echo "$1/test/final.php" | tee -a final.txt; 
fi &

done 

【问题讨论】:

  • done 在那里做什么?它属于什么语句?
  • 另外 20 行呢?
  • 这几乎不是 MCVE,但我猜你需要在 done 之前删除 &
  • 我做了,但这不起作用
  • 你从哪里得到的代码?我刚刚在 Google 上搜索了“nohup echo ELMAYET”,结果只发现您在问这个问题。

标签: bash syntax


【解决方案1】:

假设您的脚本中没有其他重要内容,您只需删除done

done 是一个 shell 关键字。它用于标记whileforuntil 循环的结束。如果它没有标记循环的结束,那就是语法错误。

出于好奇,您认为done 是做什么用的,为什么要将它添加到脚本中?如果您认为您需要done 来标记脚本的结尾,那是您的错误。脚本的结尾不需要以任何特殊方式标记;这只是文件的结尾。

【讨论】:

  • 好吧,这很好,但我认为代码必须在 final.txt 文件中给我一个结果,但没有结果?删除完成后
  • @MohammedNagy:没有更多信息无法判断。仅当curl ... | grep ... 命令成功时,该脚本才会附加到final.txt。如果至少不知道$1 的值,就无法猜测它是否会成功或失败。 (顺便说一句,我不知道第一行 nohup echo ... 是干什么用的。)
  • 好的,我会在你的电子邮件上给你发按摩师给你更多信息
  • @MohammedNagy:请不要。把它贴在这里,让每个人都能受益。
  • @MohammedNagy:那你可能不应该和我分享。我很高兴在网站上提供帮助,因此每个人都可以受益——我已经回答了你的问题。如果您需要私人支持,我将不得不考虑收取多少费用(可能超过我的价值)。如果您在本站需要帮助,您需要在 cmets 中回答问题;例如,您说您获得了“来自 google”的代码(这似乎与您声称它是私有的不一致,除非它是 Google 内部代码),但您没有说出它的来源。
猜你喜欢
  • 2015-01-01
  • 2018-07-03
  • 1970-01-01
  • 2011-08-02
  • 2014-02-26
  • 2018-12-18
  • 2014-01-20
  • 2015-12-11
  • 2021-07-29
相关资源
最近更新 更多