下面有一个while循环,它逐行读取文件中的错误代码,如果在log.txt文件中找到这个错误代码,那么我需要设置alert=1,然后通过用分号连接这些错误来写一个shell变量。但是,当我在下面写When循环时,它并没有给出期望的结果。
log.txt文件数据:
奥拉-03113
奥拉-00933
errors.lst文件数据:
奥拉-03113
奥拉-00933
错误
export LOGFILE=/temp/log.txt
alert=0
error=""
while IFS= read -r line || [[ -n "$line" ]]; do
if grep -q $line "$LOGFILE"; then
alert=1
error="${error};${line}"
fi
done < errors.lst
echo $alert
echo $error我预期的产出如下:
;ORA-03113;ORA-00933
但我的产出低于预期:
;ORA-00933
在我做错事的地方,你能帮帮我吗?
发布于 2021-02-20 21:21:44
看起来您的文件包含\r (回车,ASCI0xd)。当您的终端模拟器看到它时,它会删除到目前为止显示的所有内容,并移到行的开头。这些回车字符通常来自Windows样式的行尾.对输入文件运行dos2unix以消除它们:
dos2unix log.txt errors.lsthttps://stackoverflow.com/questions/66296008
复制相似问题