bash - 在循环中回显变量和附加文本
问题描述
我正在尝试逐行读取文件并将文本添加到每一行,然后再回显它们。
但是输出看起来总是错误的
link.txt 包含(末尾有换行符):
http://example.com/ddk.zip
http://example.com/453.zip
http://example.com/hth.zip
test=1; while read link; do echo "so $link wow $test"; done < link.txt
wow 1p://example.com/ddk.zip
wow 1p://example.com/453.zip
wow 1p://example.com/hth.zip
奇怪的是,它在循环之外工作正常:
test=1; link=2; echo "so $link wow $test"
so 2 wow 1
我需要单行格式。
解决方案
当您的文件具有 DOS 行结尾 ( \r\n
) 时会发生这种情况。使用以下命令修复它,您的脚本将起作用:
dos2unix link.txt
或者如果您\r
不想IFS
修改,请添加link.txt
:
test=1
while IFS+=$'\r' read -r link; do
echo "so $link wow $test"
done < link.txt
推荐阅读
- c++ - 如果 Proactor 设计模式在异步 I/O 方面更胜一筹,那为什么 ASIO 不是默认的呢?
- python - TKinter:如何为非 python 用户自动更新应用程序到下一个版本?
- reactjs - 在带有数组的单个函数中多次调用`useVal` - 意外行为
- python - 如何最好地解析大量时间戳事件以识别并发条目?
- autodesk-forge - 保护 Autodesk 查看器 js 库中的知识产权?
- scala - 桑格利亚汽酒:如何处理自定义类型
- java - 处理 JPA/Hibernate 实体与 Jackson `JsonIgnoreProperties` 的循环引用/依赖关系的错误
- r - R中计算三次根的奇怪问题
- sum - 如何计算访问子表单中相同数据的总和
- java - 我正在编写一个 Java 程序,该程序旨在根据用户的输入与用户一起播放 20 个问题的版本