【问题标题】:ksh string comparison failingksh 字符串比较失败
【发布时间】: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\">&nbsp&nbsp Valid Header Recond Found in $InptFileName"  | tee -a ${LOGFILE}
            CheckDelimetersInHeader
    else
            echo "<img class=\"message\" src=\"../images/error.png\">&nbsp&nbspNo 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">&nbsp&nbspNo Valid Header Record Found in /opt/tlm/ss_fin_prd/TLM27/datafeeds/GBLA42824140700000GBLA340C97000000000000_21012020.txt
Exiting..

不知道这里出了什么问题

【问题讨论】:

  • 这里可能涉及到 DOS 行尾(可能在输入文件中)。一个字符串以\r 结尾,另一个则没有。
  • 太棒了。这似乎是问题所在。删除 ^M 的任何方便提示
  • tr -d '\r' 将删除您的\rs(又名^M0x0d)。比较 printf 'foo\r\nbar\r\n' |hdprintf 'foo\r\nbar\r\n' |tr -d '\r' |hd

标签: shell ksh


【解决方案1】:

以下代码正在删除 ^M 字符

tr -d '\015' < $InptFileName > $InptFileName.tmp
mv $InptFileName.tmp $InptFileName

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-05
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多