ユーザーエラー処理の実行

ユーザーエラー処理の実行

runuser一部のデプロイスクリプトではこれを使用します。スクリプトを見ると、runuserステップでどのコマンドが間違っているとエラー処理がどのように機能するのか疑問に思います。この問題を直接解決しようとすると、&&次のように使用する以外は明確な方法が見つかりませんでした。

#!/bin/bash -e

echo "- next"
# this is what we're currently doing, which appears to not handle errors
runuser -l $USER -c "echo cmd2; ls non-existant-file; echo done";
echo "  exit code $?"

echo "- next2"
# best solution I've come up with so far
runuser -l $USER -c "echo cmd2 && ls non-existant-file && echo done";
echo "  exit code $?"

echo "- finish"

この問題をよりよく解決する方法に関する提案はありますか?スクリプト内のいくつかの個々のコマンドがrunuser非常に複雑になる可能性があること(たとえば、条件文など)を考慮して、エラーを処理するよりエレガントで明確な方法を見つけたいと思います。

もう一つのアイデアは次のようにすることです。

runuser -l $USER -c "echo cmd2 && ls non-existant-file && echo done" || exit 1

関連情報