【发布时间】:2017-09-29 18:56:20
【问题描述】:
假设我们有一个文件 list.txt:
line 1
line 2
如果我使用这个:
for line in $(cat list.txt)
do
echo $line"_"
done
即使我这样做:
OLD_IFS=$IFS
$IFS='$'
我明白了:
line1
line2_
而不是:
line1_
line2_
我该如何解决这个问题?
【问题讨论】:
-
你为什么要和
IFS搞这个琐碎的工作? -
IFS='$'(不要使用$进行分配)会导致文字美元符号上的分词;这不是正则表达式。 -
for循环永远不适合遍历文件的行;见mywiki.wooledge.org/BashFAQ/001。 -
另见Why you shouldn't read lines with
for。并且随时链接到您获得现有实践的地方 - bash 标签中有很多错误信息/不良内容;如果您引起我们的注意,我们可以尝试纠正它。 -
如果你真的只是想附加一个下划线,你也可以使用
sed 's/$/_/' list.txt。
标签: bash command newline substitution cat