grep 出力の再利用

grep 出力の再利用

私のプロジェクトで保留中のTODOを印刷するスクリプトを作成していますが、変数の1つを再利用するのに問題があります。より明確にするために、私が書いたコードは次のとおりです。

#!/usr/bin/env bash
todos="$(grep "TODO:" ./src -R)"
number_of_todos="$(echo "$todos" | wc -l)"

if [[ $number_of_todos -gt 0 ]];
then
    echo "List of TODOS:"
    echo $todos
else
    echo "There are no pending TODOs."
fi

この場合、スクリプトは値が何であっても常に句のthen一部を繰り返します。しかし、私が次のように定義した場合ifnumber_of_todosnumber_of_todos

number_of_todos="$(echo "$todos" | wc -l)"

これにより、コードが正しく機能します。grepコードの重複を避けるために出力を再利用したいと思います。私は何を見逃していますか?

まず、ありがとうございます。

ベストアンサー1

簡略化:grep何も見つからない場合は、ゼロ以外の値で終了します(またはTODOSシェルに何も含まれているかどうかをテストできます-n "$TODOS")。

#!/bin/sh
TODOS=$(grep -R 'TODO:' ./src)
if [ $? -eq 0 ]; then
    echo not ok
    echo $TODOS
else
    echo ok
fi

おすすめ記事