【问题标题】:IFS in .ksh acting strangly.ksh 中的 IFS 表现得很奇怪
【发布时间】:2016-12-02 22:47:36
【问题描述】:

有人能解释一下为什么我的 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

提前致谢

【问题讨论】:

    标签: linux shell unix ksh vi


    【解决方案1】:

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

    IFS='
    '
    

    this:

    IFS=$'\n'
    

    【讨论】:

    • ksh 也支持 ANSI-C 引用:IFS=$'\n'
    • 谢谢。你在那里做什么?那是 ' 后跟一个新行,然后是另一个 ' 吗?我很困惑为什么它们在不同的行上。
    • chepner - 谢谢,这实际上是我最初所拥有的,当它导致问题时(我正在重新输入所有内容,因为我的实际脚本位于未连接到任何其他公司互联网的测试机器上,我忘了$。
    猜你喜欢
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多