Linux 运行程序报错 syntax error near unexpected token `(‘ ,原因你绝对想不到

1. 前言

本来是想随意写一个简单的程序进行测试,结果一个报错让我怀疑人生。本文描述的报错原因,大家是绝对想不到的。请看我一一道来,纯粹自嘲吧。

2. 探索过程

就拿最熟悉的 Hello world 来演示,程序如下:

#include "stdio.h"

int main(int argc, char *argv[])
{
       printf("hello world!\n");
       return 0;
}

代码简单,可就是编译通过,运行出错,出错信息如下:

./func.c: line 3: syntax error near unexpected token `('
./func.c: line 3: `int main(int argc, char *argv[])'

尝试过程如下:

  1. 考虑到 Windows 和 Linux 下换行符的差异,直接在 Linux 下重新创建文件并使用 Vim 编写,无果;
  2. 考虑到报错信息提到 main 字样,仔细查看 main 附近代码,看是否有中文标点符号,无果;
  3. 考虑…知识储备和经验不够了…

但很多时候,在我怀疑人生而无果但依然坚持的情况下,能够让我突然窥探到我想要的答案,很是幸运。

3. 原因

在 Linux 下使用如下命令编译源文件后

gcc func.c

在控制台习惯性的输入 ./fu 并使用 Tab 键自动补全来运行程序,并且一气呵成

./func.c

结果就报出了以上错误;
其实编译后生成的可执行文件是 a.out,而我误以为编译生成了 func 可执行文件,就没想到自动补全后运行的是 func.c 源文件,而源文件没经过编译运行居然提示报错在 main 函数处。

4. 结语

首先我得吐槽一下:运行非执行文件,报错信息居然这么误导人。又算是栽到你手里了 – Linux

再次深刻的体会到了 习惯的力量,这力量是巨大的,巨大到你不会认为执行命令的语句是错误的,眼睛死死的盯着出错信息来进行判断。

本博文很大概率并不是大家想要的预期答案,甚至会认为这是在瞎扯。确实,对于不会面临该问题的人来说是瞎扯,但是因为个人习惯而面临的时候,也算是一种解决问题的思路。

一切没有解决的问题都是大问题,一切解决了的问题都是小问题。

  • 31
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
引用\[1\]:在执行一个shell脚本时报错报错信息为"-bash:syntax error near unexpected token ‘newline’"。这个错误通常是由于脚本中存在语法错误导致的。在这种情况下,检查脚本中是否有多余的符号或者特殊字符,比如多余的">"符号。\[1\] 引用\[2\]:另外一个可能的原因是脚本文件中存在Windows换行符(^M)导致的错误。这种情况下,可以使用vi -b命令打开脚本文件,查看是否存在这些特殊字符,并将其删除。\[2\] 引用\[3\]:对于git remote报错"syntax error near unexpected token `newline'",这个错误通常是由于git配置文件下载错误导致的。检查git配置文件中是否存在特殊字符或者错误的语法。\[3\] 综上所述,当遇到类似的错误时,需要检查脚本中是否存在语法错误、多余的符号或特殊字符,并确保配置文件正确下载。 #### 引用[.reference_title] - *1* *2* [配置seata的nacos-config.sh出现:syntax error near unexpected token ‘newline‘的最全解决措施](https://blog.csdn.net/weixin_59823583/article/details/126651988)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Git拉取时报错syntax error near unexpected token `('](https://blog.csdn.net/yjfolzxl/article/details/80333283)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值