以下は私のコードです
1_week=$(git log --since=$(date +"%Y-%m-%d" --date="@$(($(date +%s) - 604800))")|grep '^commit ' |wc -l) && 2_week=$(git log --since=$(date +"%Y-%m-%d" --date="@$(($(date +%s) - 604800))")|grep '^Author:' |sort -u|wc -l)
間違い:
+ let '1_last_week += 0'
/home/mytestshell.sh exited with return code 1
以下にこの内容を引用しようとします。https://blog.m157q.tw/posts/2021/06/09/be-careful-when-using-grep-on-circleci/
1_week=$(git log --since=$(date +"%Y-%m-%d" --date="@$(($(date +%s) - 604800))")|grep '^commit ' || true |wc -l) && 2_week=$(git log --since=$(date +"%Y-%m-%d" --date="@$(($(date +%s) - 604800))")|grep '^Author:' || true |sort -u|wc -l)
ただし、見つかった値が0の場合、まだ1回出口エラーが発生します。ここで欠けている部分が何かを案内してくれる人はいますか?
挨拶、
ベストアンサー1
これがどのシェルに対して作成されたかは明らかではありませんが、通常、変数名は数字で始めることはできません。
コードを貼り付け始めることをお勧めします。https://shellcheck.net(またはshellcheck
ローカルにインストール)。これはあなたが自分で解決できる多くの問題を見つけるのに役立ちます。
あなたのスタイルも改善の恩恵を受けるでしょう。長くて密なコード文字列は読みやすく理解しにくい。比較のために異なるスタイルがあります。
#!/bin/sh
#
dt_since=$(date --date='1 week ago' +'%Y-%m-%d')
nr_commits=$(git log --since="$dt_since" | grep '^commit ' | wc -l)
nr_authors=$(git log --since="$dt_since" | grep '^Author:' | sort -u| wc -l)
$nr_commits
その後、合計の結果を使用していくつかの数学演算を実行できます$nr_authors
。何を達成したいのか分かりません。説明したas&&
は、作成者が1つ以上のコミットを持っている場合、成功した(0値)終了ステータスを取得したいという意味です。
[ $nr_commits -gt 0 ] && [ $nr_authors -gt 0 ]
exit
($nr_commits
ゼロ以外の場合は作成者が必要であるため、$nr_authors
チェックを完全に削除して式を最適化できます。)
エラーに関しては、私が示したコードには何の問題もないので、let
助けることはできません。let