私のプロジェクトで保留中の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
一部を繰り返します。しかし、私が次のように定義した場合if
number_of_todos
number_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