通过子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
书上是这么写的但是我发现两种的执行结果是一样的,为什么

怎么保留换行符
展开
 我来答
匿名用户
推荐于2017-11-26
展开全部
应该是shell版本的问题。
cshell 不能换行。 bash 和 sh 输出都 可以。
追问

我的bash 不可以啊  真的想知道为什么  您可以试一下看看是什么问题吗 还是书上的错误

追答
default IFS settings. try this: 
ifs=$IFS; IFS="\n"; echo $(cat text.txt)
你可以了解下IFS这个环境变量的相关知识。
IFS:内部域分隔符;
shell 会对 command line 作处理;
读取文件时候没有把换行符看成是一个词,而是直接替换成空格,再进行重组,显示在频幕上;
然而,你将 IFS 换成其他,那 shell 将视你那些 space/tab 为"词",而不是 IFS 。那在重组时,你可得到这些"词"。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式