在Bash中将LINE存储在一个字符串中

时间:2010-01-26 13:44:55

标签: bash echo

我有一个读取线条的bash脚本

filename=$

while read LINE
do
 ...... 
done < $filename

我想知道如何将$ LINE存储在一个字符串(my_string)中,以便我可以为每一行存储

echo $ my_thing“”$ my_string

我尝试了几件事但是当我用echo或printf打印时,$ LINE会删除之前的所有内容

Tjans

3 个答案:

答案 0 :(得分:1)

您的文件中可能包含回车符。例如,它可能是具有该行结尾样式的DOS或Windows文件。如果是这种情况,您可以在文件上运行dos2unix以将其转换为Unix样式的行结尾,或者您可以在阅读时删除它们:

LINE="${LINE//$'\r'}"

会在do声明之后发生。

答案 1 :(得分:0)

当你执行这样的读取循环时,该行存储在变量$ LINE中,所以试试这个

while read -r LINE
do
 echo "$LINE $LINE"
done <"file"

如果您想将LINE存储在另一个字符串中,请执行此操作

my_other_string=$LINE

答案 2 :(得分:0)

我认为丹尼斯威廉姆森确定了为什么你会看到“删除之前打印的所有内容”的行为。

我要指出,如果您要在bash脚本中执行“while read ...”处理,则需要使用两者 -r标志来读取< em>和将您的IFS设置为空字符串。第一个是需要保持stdin中的任何反斜杠处理原始,第二个是需要避免在stdin的开始和结束处修剪空格。你可以像这样组合它们:

while IFS= read-r LINE; do
    echo "$LINE"
done < "file"