在shell脚本中,如果数据库离线,我有以下代码可以提前退出;
Br3trans -u / -c -f dbstate && ( echo Datenbank ist online. ; echo Nächster Schritt... ) || ( echo "Datenbank ist offline" ; exit 1 );
echo Test
Run Code Online (Sandbox Code Playgroud)
如果数据库脱机,它不会退出脚本,而是转而回显“测试”。
有任何想法吗?
roa*_*ima 17
该exit
语句退出子shell。
如果您展开单衬纸,它将开始按您的预期工作
#!/bin/bash
if Br3trans -u / -c -f dbstate
then
echo "Datenbank ist online."
echo "Nächster Schritt..."
else
echo "Datenbank ist offline"
exit 1
fi
echo Test
Run Code Online (Sandbox Code Playgroud)
或者,在某些 shell 中,您可以使用 grouping{...}
而不是 subshell (...)
,但我认为为了可读性,最好使用我给您的稍长的版本。
我认为你的问题是你有exit
一个( ... )
-enclosed 组中的命令,它将在专门为该命令组创建的子 shell 中执行所有命令。因此,您的exit
语句仅适用于子 shell,而不适用于用于运行脚本的主 shell。
在这种情况下,我会推荐显式测试命令而不是“单行”方法:
#!/bin/bash
if Br3trans -u / -c -f dbstate
then
echo "Datenbank ist online"
echo "Nächster Schritt ..."
else
echo "Datenbank ist offline"
exit 1
fi
echo "Test"
Run Code Online (Sandbox Code Playgroud)
如果您愿意,您仍然可以将其写为单行:
if Br3trans -u / -c -f dbstate; then echo "Datenbank ist online"; echo "Nächster Schritt"; else echo "Datenbank ist offline"; exit 1; fi
echo "Test"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1416 次 |
最近记录: |