问题标签 [ifs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5549 浏览

arrays - 根据空行或任何未使用的字符将文本文件拆分为数组

我有一个文本文件,其中包含由空文本行分隔的文本行。我想将该文件的内容推送到一个数组中,并使用空行作为分隔符。我尝试了 IFS="\n" (或 "\r\n" 等。)但无法让它工作,所以我想我会用不在文件中的字符替换任何空行,所以我拿起了西班牙倒置问号 (\xBF)

这样就行了,我有一个字符,我将用它来分割我的文件并将其放入一个数组中。(有点随机技巧,但嘿,这只是一种方法..)

现在我需要更改 $IFS 以便它使用倒置的问号来分割数组的数据。

如果我输入

在命令行中它工作得很好

但是,如果我键入带有尾随 read -a 的命令,那么它什么也不做:

这很奇怪,因为 $var 有一个值。

更令人惊讶的是,当我在得到以下信息后立即验证 IFS 的值时:

这是 IFS 的默认值。

我很确定 IFS 可以使用任何字符,不是吗?

或者,如果您有任何技巧可以根据空行拆分数组中的文件,我很感兴趣!(为了理解起见,我仍然想深入了解这一点)。

非常感谢,周末愉快:)

0 投票
3 回答
102 浏览

bash - 在 shell 中拆分名称文件

我在这里知道如何拆分由 ls 命令找到的文件名:D。让我解释得更好...

我有一个变量

然后我想拆分搜索结果,因为我只想要 .img 之前的名称,所以一个好主意是使用 IFS。

IFS=. read -r disk <<< $image

非常好,但是当用 $disk 变量做一个回显时,我看到的是一个“.img”,我想恢复那个点之前的位置。

谢谢大家,如有错误请见谅:)

0 投票
1 回答
323 浏览

bash - 以空字符分隔的命令行参数

由于文件名可能包含空格和换行符\n,我使用空字符作为字段分隔符。但我不知道怎么说find输入目录是空字符分隔的。

我失败的尝试:

如何判断find输入目录用零分隔?

0 投票
1 回答
857 浏览

shell - 如何在 KornShell (ksh) 中正确保存 IFS

我正在尝试在 KornShell (ksh) 脚本中修改它之前保存我的 IFS。我发现备份变量没有被正确保存,所以我写了一个简单的脚本来重现这个问题。

当我回显 OIFS 时,我期望看到的内容与回显 IFS 时相同,后者是空格 (040)、制表符 (011) 和换行符 (012) 的八进制 ascii 值。但是,这是输出:

请注意,IFS 变量的输出包含所有三个字符,而 OIFS 的输出仅包含换行符 (012)。我看过的每个论坛都表明这是创建 IFS 副本的方法。有谁知道为什么 OIFS 没有正确设置?我也尝试用双引号将 $IFS 括起来,但得到了相同的结果:

我在 AIX6 上运行。

0 投票
3 回答
17049 浏览

bash - shell - 临时 IFS 仅作为换行符。为什么这不起作用: IFS=$(echo -e '\n')

我试图for在 shell 中使用空格来迭代文件名。我读了一个可以使用的stackoverflow问题IFS=$'\n'而且似乎工作正常。然后,我在评论中阅读了一个答案,以使其 posix 与 bash 以外的 shell 兼容,可以使用IFS=$(echo -e '\n').

前者有效,但后者无效。这条评论被点赞了好几次。我检查了输出,变量似乎不包含换行符。


输出显示第一个字段分隔符缺失:


但在第二个方面是正确的:


我发现了一个已回答的问题,它可能与我的问题重复,也可能不重复:
linux - 当设置 IFS 以换行符拆分时,为什么需要包含退格键?- 堆栈溢出

做那里讨论的事情有什么危险IFS=$(echo -en '\n\b')吗?因为这增加了\bIFS (我检查过)。可以\b在文件名中出现吗?我不希望我的代码错误地拆分文件名。

另外,您对如何在for循环后正确处理 IFS 恢复有任何建议吗?我应该将它存储在临时变量中,还是在子shell中运行 IFS 和 for 语句?(以及如何做到这一点?)谢谢

0 投票
1 回答
44 浏览

c++ - 循环和 if 的流程中的逻辑不正确

所以我试图找到 pat.txt 中最低的年份和 don.txt 中的最高年份:

帕特.txt

唐.txt

代码如下:

然后感兴趣的代码:

目前我得到最高的患者和最低的供体(2010-2009),我需要获得(2003-2013)

我觉得其中一个执行相等的 if 语句中的逻辑是不正确的。目前它正在寻找最高的患者和最低的捐赠者。我必须翻转它们。花了几个小时试图弄清楚这一点,如果有人能看到我的错误,我将不胜感激。我确定这是一个愚蠢的小错误,但对于我的生活,我就是找不到它

0 投票
1 回答
70 浏览

unix - 在 unix 中通过 system() 设置 IFS

我试图了解 IFS 如何使用我编写的这个简单代码。但这不起作用,有人能解释为什么这不起作用吗?

根据上面的代码,命令 '/bin/date' 应该被分成 2 个命令,如 'bin' 和 'date',但这并没有发生。

0 投票
2 回答
15017 浏览

bash - 试图将字符串拆分为两个变量

我正在尝试将字符串拆分为两个变量(无需使用 while 循环):

但我没有得到想要的结果:

有人可以解释一下是否可以这样做(或类似的方式)?

0 投票
2 回答
590 浏览

bash - 使用 IFS bash 解析 CSV:选择“;” 作为分隔符

我有一个 130 列的 CSV,我需要用它做 3 个 csv。我正在循环一段时间和 IFS,因为我需要对每一行的变量做一些事情。

这是我所做的:

但是我在某些行上有问题,因为我收到的原始 csv 是这样的:

如您所见,我有一个问题;在一个值。IFS 将其读取为两个值的分离。所以这是我的问题:有没有办法采取“;” 作为分隔符,而不仅仅是 ; ?

0 投票
2 回答
98 浏览

bash - 使用 IFS= 防止前导空格被忽略

我试图在 xml 文件中的特定行之前插入几行。虽然它正在工作,但格式没有保留。前导空格被忽略。我知道我们必须使用 IFS= 并且除了许多其他链接之外,我还在以下链接中进行了交叉检查,但无济于事。:(

谁能指出我在这里犯的错误?

在读取>>在bash中逐行写入文件时保留前导空格



数据文件:



配置.xml:



输出: