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

随心笔谈2年前发布 编辑
162 0
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买



未预期的符号 `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’ 附近有语法错误内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:Powershell错误处理之what-if浅谈PowerShell 捕获错误使用shell脚本找出网站的空页面和404错误页面Powershell小技巧之用变量累积记录错误Powershell小技巧之找出脚本中的错误PowerShell中查询错误编号信息的2个方法PowerShell捕获错误的2种方法(异常捕获命令、错误变量)

© 版权声明

相关文章