スクリプトの一部としてパッケージをナゲットフィードに公開したいと思います。
dotnet nuget push package.1.2.3.nupkg --source "mysource" --api-key "mykey"
コマンドはerror: 409 already contains version 1.2.3
コード1で印刷して終了できます。私の状況では完全に大丈夫ですが、スクリプト全体が失敗します。標準出力で特定のエラーが発生した場合はゼロ以外の終了コードを飲み込みますが、エラーが発生しない場合はゼロ以外の終了コードを表示するコマンドでこのコマンドをラップしたいと思います。タスクを完了するために何を使用できますか?
ベストアンサー1
スクリプトは stdout と stderr をキャプチャし、終了コードが 0 の場合は stdout に再度印刷し、そうでない場合は stderr に印刷します。
文字列に「エラー:409バージョンがすでに含まれています」が含まれている場合、関数は0を返し、そうでない場合は元の終了コードが返されます。
#!/bin/bash
function do_nuget ()
{
# save stdout and stderr
out=$(dotnet nuget push "$1" --source "$2" --api-key "$3" 2>&1)
exitcode=$?
# if out is not empty...
if [ -n "$out" ]; then
if [ $exitcode -eq 0 ]; then
# echo to stdout
echo "$out"
else
# echo to stderr
echo "$out" >&2
fi
fi
if [ "$out" != "${out/error: 409 already contains version}" ]; then
return 0
fi
return $exitcode
}
do_nuget "package.1.2.3.nupkg" "mysource" "mykey"
echo "got exit code: $?"