当SQL查询失败时,Shell脚本循环结束文件以退出

唐·塞维克(Don Sevcik)

我们有一个Shell脚本,如果任何一个.pl文件失败,该脚本将停止运行。如果SQL文件存在,我们希望对它们进行相同的处理。区别在于,在循环中的那个时刻我们并不总是有一个SQL文件。因此,我们并不总是有一个file_num.sql。我们想要做的是,如果它存在并且失败了,那么退出下面的脚本。我们采用这种结构的方式是在do_updates文件中这样运行:

my $sqlFile = $updatesdir.'/releaseupdates_02.sql';
system("$drushcmd -r $drupalroot -u site.test.admin sql-query --file=$sqlFile") == 0 or die "$drushcmd failed: $?";

因此,在下面的主循环中,如果包含SQL命令的perl脚本失败,我们想退出循环。因此,假设有一个perl脚本调用了3和4的php文件,并且如果出错,则可以使用,但是,如果存在02的SQL文件而不是php文件,则该脚本不起作用。

# Declare a list of update script file numbers
FILE_NUMS="
  01
  02
  03
  04
"
# Run each update script
for file_num in $FILE_NUMS; do
  ${RELEASEDIR}/do_updates_$file_num.pl
  # Exit if an update script returns and exit status of anything other than zero
  if [ $? -ne 0 ]; then
    exit $?
  fi
done
00

exit $?没有获得与上一行相同的退出代码。您可以如下简化:

${RELEASEDIR}/do_updates_$file_num.pl || exit $?

更好的是,通过添加set -o errexit以在第一个错误时退出脚本来编写健壮的Shell脚本(但请注意警告)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

进程检查失败时退出Shell脚本

来自分类Dev

如何在失败时退出多行 shell 脚本,并将错误流记录到文件中?

来自分类Dev

Shell脚本在失败时不记录Java退出状态

来自分类Dev

Shell脚本在失败时不记录Java退出状态

来自分类Dev

当其中的任何命令失败时,如何使 shell 脚本退出?

来自分类Dev

运行python脚本运行shell文件时退出代码191

来自分类Dev

Shell脚本:文件意外结束

来自分类Dev

设置shell脚本的超时,以使其在时间结束时退出(0)

来自分类Dev

设置shell脚本的超时,以使其在时间结束时退出(0)

来自分类Dev

直到循环结束时退出1

来自分类Dev

退出带有嵌套循环的shell脚本

来自分类Dev

Shell脚本:While循环过早退出

来自分类Dev

Bash脚本在命令失败时退出(sshpass)

来自分类Dev

当任何jQuery Deferred失败时从for循环退出

来自分类Dev

退出while循环时fscanf失败

来自分类Dev

当任何jQuery Deferred失败时从for循环退出

来自分类Dev

Shell脚本:将sql查询输出重定向到文件

来自分类Dev

Ruby脚本在SQL查询完成之前结束

来自分类Dev

程序结束时出现循环问题,无法退出

来自分类Dev

循环SQL查询时

来自分类Dev

子脚本之一失败时不退出bash脚本

来自分类Dev

如何避免Shell脚本因特定命令失败而退出

来自分类Dev

在执行Shell脚本时,我创建了.txt文件,并在保存脚本退出后对其进行了编辑

来自分类Dev

退出shell脚本

来自分类Dev

不退出 shell 脚本

来自分类Dev

不读取时的Shell脚本循环

来自分类Dev

当从内部递归调用自身时,Bash 脚本循环过早结束

来自分类Dev

我执行Shell脚本时文件意外结束

来自分类Dev

我如何防止脚本在shell退出时终止?

Related 相关文章

热门标签

归档