读取文件的第一行并将其与shell文件中的字符串进行比较

时间:2017-04-18 10:11:08

标签: shell unix

我需要读取文件的第一行并将其与文本匹配。如果文本匹配,我需要做某些操作。

问题是如果命令无法将变量与字符串进行比较。

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行捕获的价值存在一些问题。请帮忙。

2 个答案:

答案 0 :(得分:0)

有尾随空格。 使用命令 file_content =“$(echo -e”$ {file_content_init}“| sed -e's / ^ [[:space:]] //'-e's / [[:space:]] $ //')” 然后file_content被剪掉了我用来比较的字符串。

答案 1 :(得分:0)

您可以使用

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

这会忽略任何前导/尾随空格。这样做的好处是不需要花费昂贵的sed命令来删除几个字符。这就像用平板卡车送几块糖块......