shell编程时出现:未预期的符号 `then' 附近有语法错误 或者 : 行 : `then'问题

 更新时间:2022年12月14日 09:08:25   作者:wazjr  
这篇文章主要介绍了shell编程时出现:未预期的符号 `then' 附近有语法错误 或者 : 行 : `then'问题,本文给大家介绍的非常详细,需要的朋友参考下

未预期的符号 `then' 附近有语法错误: 行 : `then'` if [ -f $i ];then'未预期的符号 `done' 附近有语法错误

#!/bin/bash
cd /var/log
sum=0
for i in `ls -r *`
do
        if [ -f $i ];then
                let sum++
                echo "文件名:$i"
        fi
done
echo "总文件数量为:$sum"

上面的代码看起来是一点问题都没有,但是一旦复制粘贴到linux里面运行就会出现各种奇奇怪怪的问题,如下:

test.sh: 行 6: 未预期的符号 `then' 附近有语法错误
test.sh: 行 6: ` if [ -f $i ];then'

test.sh: 行 10: 未预期的符号 `done' 附近有语法错误
test.sh: 行 10: `done'

上面的错误信息着实是把我给整蒙了,还好我还是相信计算机的严谨,认真看了一下报错信息,发现都是then 或者 done的前面出现了一个反引号,非常奇怪,明明我们就没写过反引号进去。

查找了不少资料,最后查到是Windows和linux系统的环境不一样导致的,解决方式非常简单粗暴,就是在linux里面删除对应的代码重新一个一个敲就好,还有另一个方法是用notepad++里面设置linux环境,这个请读者自行验证。

下面看看我的解决过程:

出现如下错误

把then那行dd删除,整行重新输入,出现新的错误,如下:

把done那行删除,发现没用,还是报错,想到done是在一行起始处(并且反引号在done前面),有理由怀疑是上一行的原因,把上一行删掉重写(就是 fi),成功通过,如下:

上面只要用sudo运行即可

综上,找了好久都没找到原因,因为代码本来就是对的,只是我懒,直接copy进linux里面运行(谁知道会不兼容呢),所以还是得一个一个敲的稳妥。

到此这篇关于shell编程时出现:未预期的符号 `then' 附近有语法错误 或者 : 行 : `then'的文章就介绍到这了,更多相关shell未预期的符号 `then' 附近有语法错误内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 用内置变量调试shell脚本的方法

    用内置变量调试shell脚本的方法

    这篇文章主要介绍了用内置变量调试shell脚本的方法,需要的朋友可以参考下
    2014-03-03
  • Linux下利用Opencv打开笔记本摄像头问题

    Linux下利用Opencv打开笔记本摄像头问题

    这篇文章主要介绍了Linux下利用Opencv打开笔记本摄像头问题,需要的朋友可以参考下
    2017-08-08
  • Bash Shell中Shift用法分享

    Bash Shell中Shift用法分享

    这篇文章主要介绍了Bash Shell中Shift的使用方法,需要的朋友可以参考下
    2013-08-08
  • Shell中使用plink工具实现远程批量关机

    Shell中使用plink工具实现远程批量关机

    这篇文章主要介绍了Shell中使用plink工具实现远程批量关机,Plink 是命令行工具,执行远程服务器上的命令,需要的朋友可以参考下
    2014-12-12
  • Shell中set与shopt命令选项的含义和使用示例

    Shell中set与shopt命令选项的含义和使用示例

    这篇文章主要给大家介绍了关于Shell中set与shopt命令选项的含义与使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • Shell 管道及执行顺序分析

    Shell 管道及执行顺序分析

    Shell 管道及执行顺序分析,需要的朋友可以参考下
    2013-01-01
  • shell脚本之sed详细用法详解

    shell脚本之sed详细用法详解

    Sed是一个非交互性文本流编辑器,它编辑文件或标准输入导出的文本拷贝,vi中的正则表达式命令在sed中大多可以通用,下面这篇文章主要给大家介绍了关于shell脚本之sed详细用法的相关资料,需要的朋友可以参考下
    2022-07-07
  • Linux 中的Edquota命令

    Linux 中的Edquota命令

    Linux edquota命令用于编辑用户或群组的磁盘配额。下面通过本文给大家分享Linux 中的Edquota命令,感兴趣的朋友一起看看吧
    2017-10-10
  • Shell脚本中[]和[[]]区别详解

    Shell脚本中[]和[[]]区别详解

    在 Shell 脚本中,[] 和 [[]] 是用于条件测试的不同语法结构,它们有一些区别,主要体现在对字符串处理和表达式的支持上,这篇文章主要介绍了Shell脚本中[]和[[]]区别,需要的朋友可以参考下
    2023-12-12
  • Linux中实现非登录系统用户执行命令的方法

    Linux中实现非登录系统用户执行命令的方法

    Linux系统中,管理员经常需要通过一个无法登录shell的系统用户来执行特定的命令,这种需求在管理多用户系统或自动化任务时尤为常见,下面,我们将详细讲解如何实现这一需求,并深入分析其背后的原理,需要的朋友可以参考下
    2024-01-01

最新评论