Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash中以字符串形式存储行_Bash_Echo - Fatal编程技术网

在bash中以字符串形式存储行

在bash中以字符串形式存储行,bash,echo,Bash,Echo,我有一个bash脚本,上面写着lineas filename=$ while read LINE do ...... done < $filename 文件名=$ 读行时 做 ...... 完成

我有一个bash脚本,上面写着lineas

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”
完成<“文件”