ファイルに文字があるかどうかをテストする方法は?

ファイルに文字があるかどうかをテストする方法は?

したがって、コードのこの部分があります。名前ファイルだけが空の場合は、「該当プレイヤーなし」を出力したいと思います。 test -sコマンドを使ってみましたが、ファイルが空であっても0が出力されたり出力されません。この問題をどのように解決しますか?

       if [ $Target = m -o $Target = M ]
       then
       cut -c12-26,31-43 ./emplist > names
       grep $Name ./names
       if
       **[ -s  names ]**
       then
          :
       else
       echo "No such player"
       fi

基本的にファイルに名前がある場合は、名前を出力するか、「該当プレイヤーなし」を出力したいと思います。ファイルに名前がない場合は、「該当プレイヤーがいません」が出力されます。

ベストアンサー1

if [ "$Target" = m ] || [ "$Target" = M ];
then
   cut -c12-26,31-43 emplist > names
fi
if grep -qFe "$name" names; then
  echo "$name"
else
  echo >&2 "No such player";
fi

おすすめ記事