我有一个读取线条的bash脚本
filename=$
while read LINE
do
......
done < $filename
我想知道如何将$ LINE存储在一个字符串(my_string)中,以便我可以为每一行存储
echo $ my_thing“”$ my_string
我尝试了几件事但是当我用echo或printf打印时,$ LINE会删除之前的所有内容
Tjans
答案 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"