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

读取文件的第一行并将其与 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 块不起作用。我认为我在第一行中捕获的值存在一些问题。

答案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

相关内容