通过子shell的方式保留空格和换行符的问题
假设我们使用子shell或反引用的方法将命令的输出读入一个变量中,可以将它放入双引号中,以保留空格和换行符(\n)。例如:$cattext.txt123$out=$(ca...
假设我们使用子shell或反引用的方法将命令的输出读入一个变量中,可以将它放入双引号中,以保留空格和换行符(\n)。例如:
$ cat text.txt
1
2
3
$ out=$(cat text.txt)
$ echo $out
1 2 3 # 丢失了换行符 \n
$ out="$(cat tex.txt)"
$ echo $out
1
2
3
书上是这么写的但是我发现两种的执行结果是一样的,为什么
怎么保留换行符 展开
$ cat text.txt
1
2
3
$ out=$(cat text.txt)
$ echo $out
1 2 3 # 丢失了换行符 \n
$ out="$(cat tex.txt)"
$ echo $out
1
2
3
书上是这么写的但是我发现两种的执行结果是一样的,为什么
怎么保留换行符 展开
1个回答
推荐于2017-11-26
展开全部
应该是shell版本的问题。
cshell 不能换行。 bash 和 sh 输出都 可以。
cshell 不能换行。 bash 和 sh 输出都 可以。
追答
default IFS settings. try this:
ifs=$IFS; IFS="\n"; echo $(cat text.txt)
你可以了解下IFS这个环境变量的相关知识。
IFS:内部域分隔符;
shell 会对 command line 作处理;
读取文件时候没有把换行符看成是一个词,而是直接替换成空格,再进行重组,显示在频幕上;
然而,你将 IFS 换成其他,那 shell 将视你那些 space/tab 为"词",而不是 IFS 。那在重组时,你可得到这些"词"。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询