Linux Bash 脚本错误处理
Linux Bash Script 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
这很完美,因为 grep returns 文件名,如果它有一个 .sql 扩展名或 returns 什么都没有
我想知道如何使用 Linux 命令来 returns 结果或错误,例如
ls ./*.sql
哪个 returns 文件名,但如果找不到文件,它 returns 错误
ls: ./*.sql: No such file or directory
是否可以检查 Linux 命令是否在 bash 脚本中返回错误?
您可以使用 &&
和 ||
检查错误:
ls ./*.sql && echo "some files exist" || echo "no such files exist"
最后一个运行程序的错误代码可以通过检查$?
得到:
ls ./*.sql ; echo $?
首先,您在这里并不需要 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
一般来说,您可以在 运行 任何命令之后检查 $?
,以检查最近执行的命令的状态。
您可以使用 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
我在 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 returns 文件名,如果它有一个 .sql 扩展名或 returns 什么都没有
我想知道如何使用 Linux 命令来 returns 结果或错误,例如
ls ./*.sql
哪个 returns 文件名,但如果找不到文件,它 returns 错误
ls: ./*.sql: No such file or directory
是否可以检查 Linux 命令是否在 bash 脚本中返回错误?
您可以使用 &&
和 ||
检查错误:
ls ./*.sql && echo "some files exist" || echo "no such files exist"
最后一个运行程序的错误代码可以通过检查$?
得到:
ls ./*.sql ; echo $?
首先,您在这里并不需要 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
一般来说,您可以在 运行 任何命令之后检查 $?
,以检查最近执行的命令的状态。
您可以使用 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