シャットダウンがシェルスクリプトで機能しない

シャットダウンがシェルスクリプトで機能しない

シェルスクリプトには、データベースがオフラインのときに早く終了するための次のコードがあります。

Br3trans -u / -c -f dbstate && ( echo Datenbank ist online. ; echo Nächster Schritt... ) || ( echo "Datenbank ist offline" ; exit 1 );
echo Test

データベースがオフラインの場合、スクリプトを終了するのではなく「test」と表示されます。

どんなアイデアがありますか?

ベストアンサー1

このexitステートメントはサブシェルを終了します。

1行のテキストを展開すると、期待どおりに機能し始めます。

#!/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

{...}あるいは、一部のシェルではsubshel​​lの代わりにグループ化を使用できますが、読みやすくする(...)ために私が提供した少し長いバージョンを使用する方が良いと思います。

おすすめ記事