微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux Bash脚本error handling

我在Linux中使用bash脚本来迁移数据库输出文件,我想知道在bash脚本中执行Linux命令时处理错误方法

例如通常当我想循环通过目录中的文件,我会写这样的

# list files and grep results for .sql extension for FILE in `ls | grep ".sql"` do echo "found file: $FILE" done

这完美地工作,因为如果它有一个.sql扩展名或返回什么,grep返回文件

我想知道如何使用返回结果或错误的Linux命令,如

如何将后台作业的输出分配给bashvariables?

Linux – Bash将一个stringredirect到一个文件

rdiff备份bash脚本和cron的麻烦

奇怪的行为,而负数乘以-1

如何在我的Android中运行BASH脚本?

ls ./*.sql

它返回文件的名字,但是如果没有find文件则返回错误

ls: ./*.sql: No such file or directory

是否有可能检查一个Linux命令是否在bash脚本中返回一个错误

如何在Linux shell脚本中查找和删除基于date的文件而不查找?

如何在由bash脚本创build的文件添加新行/回车

如何find重名的同名文件,但在不同情况下存在于同一目录中的Linux文件

Git推送到远程“没有这样的文件或目录”

将多个variables与通配符合并为一个variables

首先你不需要在这里的命令。 你可以做:

# list files and grep results for .sql extension for file in *.sql; do echo "found file: $file" done

然后,如果*.sql文件不存在,为了避免单次迭代,请使用:

shopt -s nullglob # list files and grep results for .sql extension for file in *.sql; do echo "found file: $file" done

一般来说,你可以检查$? 运行任何命令后检查最近执行的命令的状态。

您可以使用&&和||来检查错误

ls ./*.sql && echo "some files exist" || echo "no such files exist"

您可以通过检查$?获取上次运行程序的错误代码$? :

ls ./*.sql ; echo $?

您可以使用$?来检查上次运行命令的退出代码 变量在bash中。 通常情况下,成功执行返回0 ,失败执行返回1或更高。 举个例子:

$ touch /root/test touch: cannot touch '/root/test': Permission denied $ echo $? 1

你可以将它合并到你的bash脚本中,如下所示:

#!/bin/bash touch /root/test if [ $? -eq 0 ] then echo "Successfully created file" else echo "Could not create file" fi

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐