问题标签 [command-substitution]

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 投票
3 回答
1226 浏览

shell - 在命令替换中使用 find(1) 并用空格引用文件名

我想在命令替换中使用 find ,其中返回的文件名包含空格。我需要什么选项才能正确引用文件名?我试过-print0了,但它在 shell 本身中不起作用。

例子:

我也尝试过-exec echo "{}" \;,但这也无济于事。


如果我set -x用来显示 shell 扩展和执行的实际命令,我会得到:

单引号从何而来,为什么要应用于每个“单词”?

0 投票
2 回答
5564 浏览

zsh - 在 ZSH 中捕获和测试输出命令

我尝试了无数方法来获得我想要的东西,但似乎没有任何效果。我总是以类似的东西结束2:not found

我想捕获命令的输出,然后测试它是否等于“!”,如下所示:

我应该如何重写上面的代码以避免错误test:2: = not found

0 投票
2 回答
105139 浏览

arrays - 如何将命令的输出分配到数组中?

我需要将结果从 a 分配grep给一个数组......例如

这导致了一堆带有行号的行,其中找到了搜索词。

将它们分配给 bash 数组的最简单方法是什么?如果我只是将它们分配给一个变量,它们就会变成一个以空格分隔的字符串。

0 投票
1 回答
5121 浏览

bash - bash局部变量赋值中命令替换的退出代码

如果分配给函数中的局部变量,如何检查 bash 中命令替换的退出代码?
请参阅以下示例。第二个是我要检查退出代码的地方。
有人对此有很好的解决方法或正确的解决方案吗?

0 投票
1 回答
306 浏览

c++ - 防止 shell 命令替换

有没有办法防止 shell 脚本中的命令替换?

例如,如果脚本包含如下行:

我想要一种获得“echo foo”的方法。不仅仅是 foo 命令的替代品。

编辑:我正在尝试存储这些命令以供以后评估。另外我不能手动编辑脚本;我在 C/C++ 程序中需要这些值,这样我就不得不以某种方式解析脚本,这会破坏目的(这正是我想要避免的:解析脚本)。

编辑#2:这里解释了完整的情况:有这个shell脚本包含一堆这样的变量:

等等。我希望每个变量都存储表达式的正确部分(即“bar”和“some_command”)。我必须在 C/C++ 程序中执行此操作,因此我无法手动编辑脚本(例如添加单引号)。

0 投票
3 回答
683 浏览

bash - Bash 脚本命令重定向/重用——如何实现多向分层重定向?

我正在努力理解命令重定向/重用......

我知道有组合输出的<(...) <(...)方法和$( ... && ... )技术。但我并不完全理解有什么区别(我意识到(...)转储你在一个新的 shell 中,导致你可能会跳转 dirs 并丢失你没有导出的任何变量,但我不确定它如何影响一般重定向方案),在浏览了以下示例和说明后,我仍然对如何进行一对多重定向感到困惑:
Advanced Bash Scripting Guide 1
Advanced Bash Scripting Guide 2

我自己尝试使用它的尝试大多导致“模糊重定向”错误。

例如,假设我想做一个由下面的伪代码给出的单行

或作为流程图

其中输出被指定为-->;在另一个操作中重用的存储由-->(#); 和组合操作由 给出&&

我目前不知道如何在没有冗余代码的情况下在一行中执行此操作。

我想真正掌握命令重定向,这样我就可以制作一些强大的单行代码。

希望这足够清楚......如果您需要它们,我可以为命令提供概念证明示例,但伪代码应该会给您这个想法。

0 投票
1 回答
1573 浏览

bash - pgrep 打印出与预期不同的 pid

我写了一个小脚本,出于某种原因,我需要转义参数中传递的任何空格以使其正常工作。

我阅读了许多其他关于有此问题的人的文章,这通常是由于没有引用 $@,但我的所有变量都在脚本中引用,并且在命令行中也引用了参数。此外,如果我在调试模式下运行脚本,则返回的行可以通过复制粘贴成功运行,但在脚本内执行时会失败。

代码:

例子:

bash test.sh "blah blah"

失败,而是返回当前运行的 shell 的 pid

bash test.sh "blah\ blah"

成功并返回您通过 pgrep 搜索的进程的 pid

0 投票
2 回答
20725 浏览

bash - 使用 AWK 从文件中读取行并创建变量

我有一个带有文件名列表的文本文件。我想使用 AWK 从特定的行号创建一个变量。我得到正确的输出使用:

我想将此输出分配给一个变量,并且从文档中我发现我希望以下工作:

或者

然而,

为空白。我是 bash 脚本的新手,不胜感激。

0 投票
2 回答
1226 浏览

bash - bash 命令替换:在单引号中查找带有通配符的命令

我想动态构造一个“查找”命令并查看它是否返回任何内容。

这是最小化的例子。在包含文件的目录中,

当然返回文件。但

什么都不返回。看起来像是引号解释的问题。但为什么?

(实际情况是我想查看是否存在带有某个前缀的文件。所以我打算使用-name '${MYPREFIX}*',捕获其中的输出$(),并测试生成的字符串是否为空。)

如果这是微不足道的,请道歉。我确实花时间找到了答案,但我发现的所有案例都有些不同。通常,问题是在 find 命令应该执行此操作时扩展通配符的 shell。在这里,shell 没有做任何过早的扩展,但 find 也没有,可能是因为 find 接收文字引号?感谢您的任何见解。

0 投票
1 回答
242 浏览

linux - bash中的替换顺序

我需要演示命令替换、变量替换和通配符发生的顺序。关于如何做的任何想法?