在bash中以字符串形式存储行
我有一个bash脚本,上面写着lineas在bash中以字符串形式存储行,bash,echo,Bash,Echo,我有一个bash脚本,上面写着lineas filename=$ while read LINE do ...... done < $filename 文件名=$ 读行时 做 ...... 完成
filename=$
while read LINE
do
......
done < $filename
文件名=$
读行时
做
......
完成<$filename
我想知道如何将$LINE存储在一个字符串(我的_字符串)中,以便对每一行执行操作
echo$my_thing”“$my_string
我尝试了几种方法,但当我使用echo或printf打印时,$LINE会删除它之前的所有内容
Tjans当您执行这样的while read循环时,该行存储在变量$line中,因此请尝试以下操作
while read -r LINE
do
echo "$LINE $LINE"
done <"file"
当您这样执行while read循环时,该行存储在变量$line中,因此请尝试以下操作
while read -r LINE
do
echo "$LINE $LINE"
done <"file"
您的文件中可能包含回车符。例如,它可能是具有该行结尾样式的DOS或Windows文件。如果是这种情况,您可以在文件上运行
dos2unix
,将其转换为Unix样式的行尾,也可以在读取时将其剥离:
LINE="${LINE//$'\r'}"
它将在
do
语句之后出现。您的文件中可能包含回车符。例如,它可能是具有该行结尾样式的DOS或Windows文件。如果是这种情况,您可以在文件上运行dos2unix
,将其转换为Unix样式的行尾,也可以在读取时将其剥离:
LINE="${LINE//$'\r'}"
这将在
do
语句之后出现。我想丹尼斯·威廉姆森已经确定了为什么会出现“删除之前打印的所有内容”的行为
我要指出的是,如果要在bash脚本中执行“whileread…”处理,则需要同时使用-r标志来读取IFS并将其设置为空字符串。第一个是为了使stdin中的任何反斜杠保持原始处理,第二个是为了避免在stdin的开始和结束处修剪空白。您可以这样组合它们:
while IFS= read-r LINE; do
echo "$LINE"
done < "file"
而IFS=read-r行;做
回音“$LINE”
完成<“文件”
我认为丹尼斯·威廉姆森(Dennis Williamson)发现了为什么会出现“删除之前打印的所有内容”的行为
我要指出的是,如果要在bash脚本中执行“whileread…”处理,则需要同时使用-r标志来读取IFS并将其设置为空字符串。第一个是为了使stdin中的任何反斜杠保持原始处理,第二个是为了避免在stdin的开始和结束处修剪空白。您可以这样组合它们:
while IFS= read-r LINE; do
echo "$LINE"
done < "file"
而IFS=read-r行;做
回音“$LINE”
完成<“文件”