スクリプトでdosya CLIのJSONを解析する
dosya CLIの終了ステータスを保持し、一部が失敗した場合も有効なコマンド固有のJSONを解析して、成功を確認してから後続処理を開始します。
最終確認日
スクリーンショットは英語版の画面です。
適切なシェルラッパーは、jqを実行する前にdosyaのプロセスステータスを保持します。JSON出力はコマンド固有です。一括コマンドでは通常、いずれかが失敗すると、取得できた成功と失敗の結果を出力してから終了コード1で終了します。

始める前に
- 名前やIDを含む可能性のある出力には、アクセス権限を制限した一時ファイルを使ってください。
- パイプラインを使う場合は
set -o pipefailを保持するか、パーサーによってCLIのステータスが隠れないようパイプラインを使わないでください。 - コマンドの仕様に記載されたレスポンスに対して、正確な
jq -eの検証条件を選んでください。
手順
- 標準出力と標準エラー出力に別々のファイルを作成し、
--jsonを付けてコマンドを実行してください。例:dosya whoami --json >result.json 2>result.err。 status=$?をすぐに取得し、jqのステータスに置き換えずに分類してください。標準エラー出力は元の数値結果と共に保持してください。- 標準出力が空でなければ、終了コードが0以外でも
jq -e . result.jsonを実行してください。有効なコマンド出力を保持し、解析に失敗した場合はdosyaのステータスを失わずに別途報告してください。 whoamiの必須ユーザー識別子やlsの想定される項目の集合など、コマンド固有のセレクターを適用してください。共通のレスポンス構造はありません。mv、rm、再帰ダウンロード、ゴミ箱、スター、同期の一括処理では、コマンドのfailuresの項目と成功件数を確認してください。一部だけ処理された場合、通常は有効なJSONを出力して終了コード1で終了します。- dosyaのステータスが0で、コマンド固有の事後条件を満たした場合にのみ後続処理を開始してください。復旧用に機密情報を除いた部分的な結果を保持し、機密情報を含む一時ファイルを削除してください。

確認できる結果
ラッパーはCLIの失敗分類を保持し、終了コードが0以外でも有効な出力から有用な結果を取り出します。終了コードが0で、コマンド固有の事後条件も満たした場合にのみ後続処理を開始します。
トラブルシューティング
JSONファイルが空です。 標準エラー出力と保存したプロセスステータスを確認してください。jqを失敗原因として報告しないでください。
有効なJSONを出力した一括処理が終了コード1で終了する場合 成功件数と失敗項目を保持し、失敗した各項目を修正または報告して、タスク全体は失敗として扱ってください。
警告によって解析できない場合 警告は標準エラー出力に出力されるはずです。ストリームの結合をやめ、ラッパーが現在のCLIバイナリを実行していることを確認してください。
関連ガイド
この記事は役に立ちましたか?
評価の結果を読み込んでいます…
投票すると、回答を変更できるように、必要な投票用Cookieが最長180日間保存されます。
質問と回答
このガイドの手順について質問できます。質問は確認後に公開されます。
公開の質問には、アカウントの詳細、認証情報、非公開ファイルを含めないでください。これらについては 非公開サポート をご利用ください。
質問を読み込んでいます…
dosyaアカウントにサインインすると、質問を投稿できます。