为什么字符串比较结果总是错误

为什么字符串比较结果总是错误

我正在尝试一次性检查 apache 的 mod-status 页面是否有这样的更新(这只是一个测试脚本):

firstcontent=$(lynx -dump http://some-server/server-status-page)
echo $firstcontent > /tmp/myfirstcontentfiles.txt
nextcontent=$(lynx -dump http://some-server/server-status-page)
prevcontent=`cat /tmp/myfirstcontentfiles.txt`
#this always returns false, but their contents are same
if [ "$prevcontent" == "$firstcontent" ]; then   echo "match"; fi
#but this returns true 
if [ "$nextcontent" == "$firstcontent" ]; then   echo "match"; fi

我的问题是为什么 $prevcontent 和 $firstcontent 比较返回 false,而我应该获得真实的返回值?当我将其保存在文件中时,幕后发生了什么吗?

答案1

为什么我的 shell 脚本会因为空格或其他特殊字符而卡住?了解原因。 1 句话版本是:始终在变量替换周围使用双引号。

echo "$firstcontent" >/tmp/myfirstcontentfiles.txt

大多数情况下有效:它不会折叠变量值中的空格或展开通配符。然而,这仍然会删除尾随的空行(命令替换可以做到这一点),并且在某些 shell 中,该echo命令会扩展反斜杠。在脚本中,将命令的原始输出写入文件的最简单方法是在它到达 shell 之前执行此操作:

firstcontent=$(lynx -dump http://some-server/server-status-page | tee /tmp/myfirstcontentfiles.txt)

相关内容