linux – Shellscript错误处理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – Shellscript错误处理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1040字,纯文字阅读大概需要2分钟。
内容图文
![linux – Shellscript错误处理](/upload/InfoBanner/zyjiaocheng/957/f0aed59d2cb74c2a9ea4ff674679f682.jpg)
我正在编写一个非常简单的shell来删除给定文件夹的文件,在这种情况下,所有.csv文件都存在于该文件夹中.
代码如下所示:
#!/bin/bash
# Used to clean folder
MinVal=0
Files=$(ls -1 *.csv | wc -l)
if [ $Files -gt $MinVal ];then
rm *.csv
echo -e "\e[31;43m***** DONE *****\e[0m"
else
echo -e "\e[31;43mThere is no valid file to delete, please check\e[0m"
fi
shell脚本按预期工作,但是当您执行shell并且文件夹中没有.csv文件时,终端会说明以下内容:
ls: cannot access *.csv: No such file or directory
当然它还会显示其他消息:
There is no valid file to delete, please check
有没有办法避免ls:无法访问* .csv:没有这样的文件或目录,直接进入else错误处理?
问候.
解决方法:
发生这种情况是因为* .csv被shell逐字传递给ls,这是默认的POSIX行为.如果你想避免这种情况,你应该使用nullglob,以便返回任何内容的globs不返回任何内容,而不是返回输入的逐字字符串.这有一个问题,因为当没有提供文件时,ls有不同的行为.
请尝试这样做,这样可以避免在文件名中嵌入换行符时出现错误:
shopt -s nullglob
filenames=( *.csv ) # put all files in an array
files="${#filenames[@]}" # get number of files
内容总结
以上是互联网集市为您收集整理的linux – Shellscript错误处理全部内容,希望文章能够帮你解决linux – Shellscript错误处理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。