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

例如,通常当我想遍历目录中的文件时,我会这样写

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

这非常有效,因为grep如果文件扩展名为.sql或不返回任何内容,则返回文件名

我想知道如何使用Linux命令返回结果或错误,例如
ls ./*.sql

它返回文件名,但是如果找不到文件,则返回错误
ls: ./*.sql: No such file or directory

是否可以检查Linux命令是否在bash脚本中返回错误?

最佳答案

首先,您实际上不需要这里的ls命令。您可以这样做:

# 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

通常,您可以在运行任何命令后检查$?来检查最近执行的命令的状态。

关于linux - Linux Bash脚本错误处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29168470/

10-11 22:44
查看更多