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