正如预期的那样,它会将'testEmpty'文件的每一行打印到控制台。
while read i; do
echo $i
done < testEmpty
....但是这个:
while read i; do
name=$i
echo $name
done < testEmpty
仅打印空白行。
我这样做的原因是因为在'testEmpty'文件的每一行都有一个URL,我在同一个while循环中进行卷曲(为了清楚起见已删除)并且我希望将文件扩展名附加到part用作文件名的url,我认为在同一个循环中执行此操作非常简洁。
BTW'testEmpty'文件应该只有1个或者2个条目,所以我不会担心开销等问题,如果我处理大文件,我认为这可能是一个问题,所以我没有必要担心这一点。谢谢
答案 0 :(得分:2)
@CharlesDuffy在他建议使用sed不是正确的字符串操作方式时就有了。这个问题的简单答案是:
while read i; do
name=${i}
echo $name
done < testEmpty
答案 1 :(得分:0)
此表格
name=$i echo $name
将在启动命令之前替换变量,因此当echo
实际运行时,bash会看到
name="contents of the line" echo
此外,您无法获得上一个行的值,因为var=value cmd ...
仅在命令的环境中设置var
变量命令的持续时间。
您需要确保在您想要取消引用之前设置变量:
name=$i; echo $name
# or if you're launching some other command, protect the variable:
name=$i sh -c 'echo $name'