ファイルの最初の行を読み取り、それをシェルファイルの文字列と比較します。

ファイルの最初の行を読み取り、それをシェルファイルの文字列と比較します。

ファイルの最初の行を読み、テキストと一致させる必要があります。テキストが一致したら、特定の操作を実行する必要があります。

問題は、コマンドが変数を文字列と比較できない場合です。

file_content=$(head -1 ${file_name})
echo $file_content
if [[ $file_content = 'No new data' ]]; then
    echo "Should come here"
fi
echo $file_content
if [ "${file_content}" = "No new data" ]; then
  echo "Should come here"
fi

ブロックが機能しない場合。最初の行でキャプチャする値に問題があるようです。

ベストアンサー1

最初の行には、印刷できない文字や前後の空白や空白以外の空白文字が含まれる可能性が高いです(に渡すときに変数を引用することを忘れましたecho)。まず掃除することもできます。

content=$(
  sed '
    s/[[:space:]]\{1,\}/ /g; # turn sequences of spacing characters into one SPC
    s/[^[:print:]]//g; # remove non-printable characters
    s/^ //; s/ $//; # remove leading and trailing space
    q; # quit after first line' < "$file_name"
)

if [ "$content" = 'No new data' ]; then
  echo OK
fi

おすすめ記事