问题标签 [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.
date - BASH:你如何“拆分”日期命令?
此处的 Cygwin 用户(尽管如果有合适的解决方案,我会将其转移到我也使用的 K/Ubuntu)。
我的 .bashrc 中有一条欢迎消息,如下所示:
在多次尝试在上面的变量 SAD 中使用空格之后,我放弃并使用了连字符。但可以理解的是,我对这种创可贴解决方案并不满意。我记得,问题是每次我尝试使用带引号的空格、\s 或一些类似的转义标记,以及 GNU 手册页的相应部分中列出的变量date时,Year 的变量要么被忽略,要么被返回一个错误。我不想做的是求助于date返回的完整字符串,而是保持我在上面代码中的顺序。
在我写这篇文章时,我突然想到,为欢迎消息设置此代码的 IFS 可能会起作用,前提是我之后将其恢复为默认值(上面出现在 68 行 .bashrc 的第 13-17 行)。但是,我不记得如何做到这一点,我也不确定它会起作用。
一般来说,.bashrc 文件是有效的 BASH 语法,不是吗?我的当然类似于我自己编写或从其他来源测试的脚本。我想,我所缺少的只是设置和取消设置此消息块周围的字段分隔符的代码。
毫无疑问,任何想出解决方案的人不仅对我有帮助,而且对网络上任何其他在 shell 脚本世界中迈出第一步(或第十三到第十七步)的相对新手都有帮助。
BZT
xml - 字符串标记化算法不会标记化
大家早上好,我正在编写一个 bash 脚本来从给定目录中的所有文件中提取某些 XML 标记的值。我决定通过标记每一行并返回相关标记来做到这一点。问题是它没有正确标记,我不太明白为什么。这是我可以做的最小的例子来重建问题
我猜这个问题与我在一个本身使用 IFS(即 cat 操作)的循环中摆弄 IFS 有关,但这以前从来不是问题。
有任何想法吗?
谢谢,里克
bash - IFS=$'\n' 的确切含义是什么?
如果以下示例将IFS
环境变量设置为换行符...
- 美元符号的确切含义是 什么?
- 在这种特定情况下它会做什么?
- 我在哪里可以阅读有关此特定用法的更多信息(Google 不允许在搜索中使用特殊字符,否则我不知道要查找什么)?
我知道IFS
环境变量是什么,\n
字符是什么(换行),但为什么不直接使用以下形式:(
IFS="\n"
这不起作用)?
例如,如果我想遍历文件的每一行并想使用 for 循环,我可以这样做:
IFS
但是,除非设置为换行符,否则这将无法正常工作。为了让它工作,我必须这样做:
注意:我不需要其他方法来做同样的事情,我已经知道很多其他方法了......我只是对此感到好奇,$'\n'
想知道是否有人可以给我一个解释。
bash - Unicode 脚本中的 IFS 变量问题
我IFS
在 shell 脚本中使用变量来解析一些数据(数据已经以给定的格式提供给我)。由于默认的 IFS 是空格/制表符/等,我使用该字符'¬'
来分隔输入文件行中的字段。数据类似于
我创建了一个脚本,该脚本使用 IFS 变量将文件通过管道传输到 while 循环中:
(在这个循环中,我实际上对另一个文件进行了一些 awk 处理)。
发生的情况是,如果我手动运行此文件(仅 ./file),它会完美运行。如果我将它作为脚本(cron)的一部分或在另一个脚本中运行,我会收到解析错误,这表明我的 IFS 变量没有被使用。我尝试过复制旧的 IFS 变量并在解析后重置以及传递 IFS 变量的不同方式(¬
, '¬'
,$'¬'
等,但似乎没有帮助)。
任何指针/提示将不胜感激。
更新:经过一些额外的调试,问题出在 awk 语句而不是分隔符上
bash - IFS 不仅仅是 R 脚本和 bash 的字符用法
我正在使用 bash 脚本编写和运行 R 脚本:因为我不精通 RI,所以我曾经在 bash 脚本中编写循环和条件,然后在 R 脚本或“这里的文档”中进行翻译......你可以想象以这种方式生成的 R_scripts 变得非常长并且难以阅读......所以我学习了如何用 R 编写循环和条件,但我发现命令 system() 有一些困难,所以我意识到 shell 脚本在某种程度上是必要的,如果我不想因为引用和转义而发疯...... ;-) 我遇到的第一个问题是:我想声明一个像这样的Rarr="file_1", "file_2", "file_3"
ecc 变量,因为我想将它插入到 R_script
需要引号,因为如果没有引用 file_names,R 会提示您找不到名为 file_names 的对象
我尝试在数组定义的逗号分隔元素中遵循第一个解决方案,IFS="" ,""
但似乎当Rarr="${arr[*]}";echo "${Rarr}"
arr 的元素仅由 ${IFS} 的第一个字符分隔时......在我的情况下,它们将被分隔"
有没有办法避免这种情况?
所以基本上我的问题是:如何强制 shell 考虑所有字符${IFS}
?
无论如何,我找到了两个解决我的问题的方法.. 第一个
另一个带有参数替换...但我想知道是否存在直接解决我的问题的方法
预先感谢您的帮助
bash - while,do,在 bash 中完成流控制
谁能解释以下 bash 脚本的控制流程?
据我了解,这会发生:
IFS 不会被分配任何东西。rm -rf 命令什么都不做,因为它的参数变量 $file 是空白/空/无。然后,前面的两个步骤将无限重复。
显然情况并非如此,因为脚本按预期工作;它会删除 todelete.txt 中列出的所有文件。
我相信解释在于“done < todelete.txt”,但我不明白那里发生了什么。
linux - Bash 不会删除前导空格
我似乎有一个非常奇怪的问题。我正在尝试使用 jsawk 从 CURL 命令中检索 JSON 字段值,但是 jsawk 需要其 JSON 漂亮打印(这可以通过“python -mjson.tool”使用正确格式化的 JSON 文件轻松实现)。
问题是我在 JSON 文件/字符串的开头有一个空格(这是非法的),但是我似乎无法删除它。
几个选项独立于我的脚本工作(例如 echo ~/m.json | sed -e 's/^[ \t]*//')
看到不同?但是以下所有方法都没有达到预期的效果。我什至尝试将字符串传递给 sed 以模拟命令行行为,但没有运气。谁能指出我正确的方向?
吐出几行(每个回声一个),直到“没有JSON ...解码”
我确定我错过了一些愚蠢的事情。也许唯一要提到的另一件事是我将 IFS 从 Space/Tab/NL 更改为简单的 NL。
有人有什么想法吗?还是解析 JSON 的另一种简单方法?谢谢!
bash - bash:一次从字符串中读取一个字符,带有空格
我很无聊,决定使用 bash 为我的基于文本的冒险编写一个脚本。基本上,它应该在某些情况下为打字机设置动画,以讲述戏剧性的故事。我可以在这样的文件中手动执行此操作:
可以想象,这非常乏味。相反,我想一次从字符串(或文件)中提取一个字符,并将 sleep 命令应用于每个字符。
到目前为止,我有以下内容,从文件中读取。IFS= 允许保留空格,但不允许保留任何其他类型的空格(例如换行符)。
有没有办法可以使用它来获取所有空格?作为一个额外的问题,你能告诉我如何将它应用于用户定义的脚本,所以我不必从单独的文件中读取吗?因此,例如,假设我有一个名为“hello”的字符串,只要我在 bash 终端中运行我的文件,我就可以简单地将它传递给我的函数以作为打字机进行动画处理。
任何帮助,将不胜感激。谢谢!
arrays - Bash 读取文件到基于两个分隔符的数组
我有一个需要解析为数组的文件,但我真的只想要每行的一小部分,并且只需要前 84 行。有时这条线可能是:
我只想将 MT 输入到数组中。其他时候可能是这样的:
我需要 GL000207.1
我在想你也许可以设置两个分隔符(一个是'>',另一个是''空格),但我不确定你会怎么做。我已经阅读了其他人关于内部字段分隔符的帖子,但我真的不确定它是如何工作的。我想也许这样的事情可能会起作用?
有什么建议么?