首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >if语句中的shell变量,它位于while循环的内部

问if语句中的shell变量,它位于while循环的内部
EN

Stack Overflow用户
提问于 2021-02-20 20:01:39
回答 1查看 28关注 0票数 0

下面有一个while循环,它逐行读取文件中的错误代码,如果在log.txt文件中找到这个错误代码,那么我需要设置alert=1,然后通过用分号连接这些错误来写一个shell变量。但是,当我在下面写When循环时,它并没有给出期望的结果。

log.txt文件数据:

奥拉-03113

奥拉-00933

errors.lst文件数据:

奥拉-03113

奥拉-00933

错误

代码语言:javascript
复制
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

在我做错事的地方,你能帮帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-20 21:21:44

看起来您的文件包含\r (回车,ASCI0xd)。当您的终端模拟器看到它时,它会删除到目前为止显示的所有内容,并移到行的开头。这些回车字符通常来自Windows样式的行尾.对输入文件运行dos2unix以消除它们:

代码语言:javascript
复制
dos2unix log.txt errors.lst
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66296008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档