2017-04-18 48 views
0

我需要讀取文件的第一行並將其與文本進行匹配。如果文字匹配,我需要做某些操作。讀取文件的第一行,並將其與shell文件中的字符串進行比較

問題是如果命令無法比較變量和字符串。

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語法。我認爲我在第一行中捕獲的價值有一些問題。請幫忙。

+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是我用來比較的修剪字符串。

相關問題