2017-04-18 13 views
0

ファイルの最初の行を読み、それをテキストと照合する必要があります。テキストが一致すれば、私は特定の操作を行う必要があります。ファイルの最初の行を読み取ってシェルファイルの文字列と比較してください

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

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 

ifブロックが機能していません。 ifの考えられるすべての構文を試しました。 1行目で取り上げている価値にはいくつかの問題があると思います。助けてください。

+0

先頭と末尾の空白があれば、そのファイルの最初の行は何ですか? 'file_name'は正しいですか?すべてを見るには 'echo" <$ file_content> "'を使い、 'set -x'をスクリプトの先頭に置きます。 – Jens

答えて

0

あなたは

case $file_content in 
    (*No new data*) 
    echo "No news is good news." 
    ;; 
    (*) 
    echo "Yay, breaking news." 
esac 

は、このいずれかのリード/末尾の空白を無視し使用することができます。これは、ほんの数文字を削除するための高価なsedコマンドを捨てないという利点があります。それは、フラットベッドトラックでいくつかの砂糖立方体を提供するようなものです...

0

末尾にスペースがあります。 コマンドを使用しました file_content = "$(echo -e" $ {file_content_init} "| sed -e 's/^ [[:space:]] //' -e 's/[[:space:]] $ // ') " そして、file_contentは私が比較に使用したトリムされた文字列でした。

関連する問題