linux - .ksh 中的 IFS 行为异常

标签 linux shell unix ksh vi

有人能解释一下为什么我的 IFS 语句会替换输出文件中的字符吗?我需要更改什么才能解决它?我想逐行(逐条记录)读取一个输入文件,并完全忽略 IFS,但我不确定要放什么,以便取出我放入的内容。

#!/bin/bash
SAVEIFS=$IFS
IFS='\n'
record="The rain in Spain"
record2="c:\user\user\document.txt"
echo $record
echo $record

我的输出是用空格替换我所有的小写“n”字符,我的“\”字符被删除,而不是(我认为会发生的)用新行分隔:

The rai  i  Spai
c: user user docume t.txt

提前致谢

最佳答案

那不是 literal newline - 您的字段分隔符实际上是字符 \(反斜杠)和 n。你可以使用这个:

IFS='
'

this :

IFS=$'\n'

关于linux - .ksh 中的 IFS 行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38638127/

相关文章:

linux - cron 脚本需要有条件地运行

linux - shell 脚本 sh 从参数中删除斜杠 (/)

shell - shell中的目录树结构

c - 如何在 C 中实现重叠检查 memcpy

unix - FreeBSD 上的 "tty"是什么?

Linux命令流水线理解

linux - Docker - 使用 localhost 访问正在运行的容器

linux - 树莓派没有IP地址?

c - 易于使用的C语言共享内存库

c - 在 Linux 中读取和写入 tar.gz 文件的内容