知识点

相关文章

更多

最近更新

更多

syntax error near unexpected token的解决办法

2019-03-08 08:29|来源: 网路

在window下编辑shell文件,如aa.sh,然后在linux下运行此文件时,就会报错 syntax error near unexpected token。

原因是因为两个操作系统的编码格式不一致导致的。

解决办法:
1.window下编辑好后,然后用vi编辑器编辑此sh文件。
2.键入:set fileformat=unix 回车
3.再键入:wq 回车


然后畅通无阻。


转自:http://ganchengjie.iteye.com/blog/2233707


相关问答

更多
  • syntax error near unexpected token `问题的解决 先说点常识问题: 因为MS-DOS及Windows是回车+换行来表示换行,因此在Linux下用Vim查看在Windows下用VC写的代码,行尾后的“^M”符号,表示的是符。 现在,你使用vim -b 打开你的文件。就会发现每一行都有^M ,那么我们可以是用全局替换替换掉 ................解决方法 在命令编辑行<就是: 按ESC键 然后shift+:冒号>输入:%s/^M//g 注意:上述命令行中的“^M”符, ...
  • 我相信耙子只能用于耙子任务。 你可以创建一个rake任务,然后调用你的方法。 require './1_arithmetic.rb' task :arithmetic, [:n] => [:environment] do |t, args| arithmetic1(args[:n]) end 然后您将使用该任务 rake arithmetic[5] 参考: 如何从rake文件运行ruby类? 参考: 如何将命令行参数传递给rake任务 I believe rake can only be used ...
  • 您可能需要安装预设阶段2 。 这个babel插件允许您使用ES6 +功能,如static s, property initializers ,甚至动态导入支持。 实际上,您可以为这种特殊情况安装transform-class-properties ,但我通常更喜欢使用stage-x安装babel插件,因为我觉得在单个安装中使用多个ES6 +功能会很方便。 对于未来的读者来说,如果您使用create-react-app ,这个特定的Babel插件已经为您正确设置也可能是有用的,您可以在这里查看 。 You'l ...
  • 您无法直接在Linux(或其他系统)中执行C源代码。 C是一种需要编译为二进制格式的语言。 您需要安装C 编译器 (实际过程因您的系统而异),编译您的程序,然后才能执行它。 目前它由shell解释。 以#开头的前两行被忽略为注释。 第三行导致语法错误。 Ok, I got what i was doing wrong. These are the steps that I took to get my problem corrected:- $ gedit simple_write.c Write the ...
  • 看起来你的render函数里有一个PHP错误。 然后PHP打印出它的错误,以后会导致JavaScript错误。 因为JSON被ajax请求返回的输出例外,并且返回包含PHP错误消息的字符串。 请根据ajax请求原始网络数据查看您的浏览器调试器,确定返回的是什么。 It seems that you have an PHP error inside your render function. And then PHP prints out its error, which later causes the J ...
  • 脚本中的行结尾是错误的。 将其传递给dos2unix以消除CR。 The line endings in the script are wrong. Pass it through dos2unix to eliminate the CRs.
  • 嘿,我终于得到了问题在脚本导演中的rails文件中的解决方案。 确保这个文件以这一行开头: - #!/ usr / bin / env ruby,在我的文件中,起始处只有一个空格,然后该行存在。 删除该空间,现在一切正常:) Hey finally I got the solution the problem was in rails file in script director. Make sure this file starts with this line :- #!/usr/bin/env ru ...
  • 您可以使用序列|&将stdout和stderr从一个进程传递到另一个进程。 你不能在|之间留一个空格 和& 。 (csh和tcsh允许一个空格; bash不允许。)我怀疑当你以交互方式运行命令时,你正好在没有空格的情况下输入它; 语法是相同的。 这个: foo |& bar 是这方面的简写: foo 2>&1 | bar 更新: 使用bash 3.2.25,无法识别|& token; 被添加为bash 4.1中的新功能。 使用较旧的bash运行脚本,我收到相同的错误消息。 要使脚本与旧版本的bash兼容 ...
  • 所以基本上你要做的就是 迭代命令svn info --revision HEAD输出的行 从第5行开始 将第2项/字段/列分配给变量%%G 在Bash中执行此操作的众多方法之一是 for variable in $(svn info --revision HEAD | awk 'NR>4 {print $2}'); do ... something fun ... done 这是做什么的 您将svn info --revision HEAD的输出管道/“发送”到awk命令。 如果NR(到目前为止处理的 ...
  • 您得到错误,因为进程替换 ( <(some command)部分)不是sh的标准功能(在POSIX中定义),这意味着它可能在某些操作系统上工作但在其他操作系统中可能不起作用或在具有不同配置的相同操作系统中。 你澄清说你的脚本顶部有#!/bin/bash ,但我猜你仍然通过sh foo.sh运行脚本,因此, #!/bin/bash将被忽略并且脚本被解释为sh 我假设您的默认shell是bash (运行echo $SHELL ),因此如果您将脚本粘贴到终端并执行,则所有问题都将消失。 ====更新==== 如果 ...