【发布时间】:2020-01-21 15:02:51
【问题描述】:
我有以下代码无法比较两个相等值的字符串
InptHeaderRow=$(head -1 $InptFileName)
echo $(head -1 $InptFileName)
echo $BaseHeaderRow
if [[ "$BaseHeaderRow" = "$InptHeaderRow" ]]; then
echo "<img class=\"message\" src=\"../images/success.png\">   Valid Header Recond Found in $InptFileName" | tee -a ${LOGFILE}
CheckDelimetersInHeader
else
echo "<img class=\"message\" src=\"../images/error.png\">  No Valid Header Record Found in $InptFileName" | tee -a ${LOGFILE}
echo "Exiting.." | tee -a ${LOGFILE}
exit 1
fi
}
下面的输出
+ CheckHeader
SUBACC^AGENT^TRANCODE^VALUEDATE^ENTRYDATE^AMOUNT^TEXT10^SDE^REF1^REF2^REF3^STMT_DATE^STYP^SCO^STMTNO^STMT_PG^SIDE^OPBAL^OPBALCY^CLBAL^CLBALCY^OPBALTP^CLBALTP^ACCOWNRINFO
SUBACC^AGENT^TRANCODE^VALUEDATE^ENTRYDATE^AMOUNT^TEXT10^SDE^REF1^REF2^REF3^STMT_DATE^STYP^SCO^STMTNO^STMT_PG^SIDE^OPBAL^OPBALCY^CLBAL^CLBALCY^OPBALTP^CLBALTP^ACCOWNRINFO
<img class="message" src="../images/error.png">  No Valid Header Record Found in /opt/tlm/ss_fin_prd/TLM27/datafeeds/GBLA42824140700000GBLA340C97000000000000_21012020.txt
Exiting..
不知道这里出了什么问题
【问题讨论】:
-
这里可能涉及到 DOS 行尾(可能在输入文件中)。一个字符串以
\r结尾,另一个则没有。 -
太棒了。这似乎是问题所在。删除 ^M 的任何方便提示
-
tr -d '\r'将删除您的\rs(又名^M、0x0d)。比较printf 'foo\r\nbar\r\n' |hd和printf 'foo\r\nbar\r\n' |tr -d '\r' |hd