回显变量并在循环内附加文本
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
我尝试逐行读取文件并向每一行添加文本,然后再回显它们。
但是输出总是看起来不对
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