回显变量并在循环内附加文本

Echo variables and appending text inside a loop

我尝试逐行读取文件并向每一行添加文本,然后再回显它们。

但是输出总是看起来不对

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

或者如果不想修改link.txt就把\r加到IFS:

test=1
while IFS+=$'\r' read -r link; do
  echo "so $link wow $test"
done < link.txt