问题标签 [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.
shell - 在命令替换中使用 find(1) 并用空格引用文件名
我想在命令替换中使用 find ,其中返回的文件名包含空格。我需要什么选项才能正确引用文件名?我试过-print0
了,但它在 shell 本身中不起作用。
例子:
我也尝试过-exec echo "{}" \;
,但这也无济于事。
如果我set -x
用来显示 shell 扩展和执行的实际命令,我会得到:
单引号从何而来,为什么要应用于每个“单词”?
zsh - 在 ZSH 中捕获和测试输出命令
我尝试了无数方法来获得我想要的东西,但似乎没有任何效果。我总是以类似的东西结束2:not found
。
我想捕获命令的输出,然后测试它是否等于“!”,如下所示:
我应该如何重写上面的代码以避免错误test:2: = not found
?
arrays - 如何将命令的输出分配到数组中?
我需要将结果从 a 分配grep
给一个数组......例如
这导致了一堆带有行号的行,其中找到了搜索词。
将它们分配给 bash 数组的最简单方法是什么?如果我只是将它们分配给一个变量,它们就会变成一个以空格分隔的字符串。
bash - bash局部变量赋值中命令替换的退出代码
如果分配给函数中的局部变量,如何检查 bash 中命令替换的退出代码?
请参阅以下示例。第二个是我要检查退出代码的地方。
有人对此有很好的解决方法或正确的解决方案吗?
c++ - 防止 shell 命令替换
有没有办法防止 shell 脚本中的命令替换?
例如,如果脚本包含如下行:
我想要一种获得“echo foo”的方法。不仅仅是 foo 命令的替代品。
编辑:我正在尝试存储这些命令以供以后评估。另外我不能手动编辑脚本;我在 C/C++ 程序中需要这些值,这样我就不得不以某种方式解析脚本,这会破坏目的(这正是我想要避免的:解析脚本)。
编辑#2:这里解释了完整的情况:有这个shell脚本包含一堆这样的变量:
等等。我希望每个变量都存储表达式的正确部分(即“bar”和“some_command”)。我必须在 C/C++ 程序中执行此操作,因此我无法手动编辑脚本(例如添加单引号)。
bash - Bash 脚本命令重定向/重用——如何实现多向分层重定向?
我正在努力理解命令重定向/重用......
我知道有组合输出的<(...) <(...)
方法和$( ... && ... )
技术。但我并不完全理解有什么区别(我意识到(...)
转储你在一个新的 shell 中,导致你可能会跳转 dirs 并丢失你没有导出的任何变量,但我不确定它如何影响一般重定向方案),在浏览了以下示例和说明后,我仍然对如何进行一对多重定向感到困惑:
Advanced Bash Scripting Guide 1
Advanced Bash Scripting Guide 2
我自己尝试使用它的尝试大多导致“模糊重定向”错误。
例如,假设我想做一个由下面的伪代码给出的单行
或作为流程图
其中输出被指定为-->
;在另一个操作中重用的存储由-->(#)
; 和组合操作由 给出&&
。
我目前不知道如何在没有冗余代码的情况下在一行中执行此操作。
我想真正掌握命令重定向,这样我就可以制作一些强大的单行代码。
希望这足够清楚......如果您需要它们,我可以为命令提供概念证明示例,但伪代码应该会给您这个想法。
bash - pgrep 打印出与预期不同的 pid
我写了一个小脚本,出于某种原因,我需要转义参数中传递的任何空格以使其正常工作。
我阅读了许多其他关于有此问题的人的文章,这通常是由于没有引用 $@,但我的所有变量都在脚本中引用,并且在命令行中也引用了参数。此外,如果我在调试模式下运行脚本,则返回的行可以通过复制粘贴成功运行,但在脚本内执行时会失败。
代码:
例子:
bash test.sh "blah blah"
失败,而是返回当前运行的 shell 的 pid
bash test.sh "blah\ blah"
成功并返回您通过 pgrep 搜索的进程的 pid
bash - 使用 AWK 从文件中读取行并创建变量
我有一个带有文件名列表的文本文件。我想使用 AWK 从特定的行号创建一个变量。我得到正确的输出使用:
我想将此输出分配给一个变量,并且从文档中我发现我希望以下工作:
或者
然而,
为空白。我是 bash 脚本的新手,不胜感激。
bash - bash 命令替换:在单引号中查找带有通配符的命令
我想动态构造一个“查找”命令并查看它是否返回任何内容。
这是最小化的例子。在包含文件的目录中,
当然返回文件。但
什么都不返回。看起来像是引号解释的问题。但为什么?
(实际情况是我想查看是否存在带有某个前缀的文件。所以我打算使用-name '${MYPREFIX}*'
,捕获其中的输出$()
,并测试生成的字符串是否为空。)
如果这是微不足道的,请道歉。我确实花时间找到了答案,但我发现的所有案例都有些不同。通常,问题是在 find 命令应该执行此操作时扩展通配符的 shell。在这里,shell 没有做任何过早的扩展,但 find 也没有,可能是因为 find 接收文字引号?感谢您的任何见解。
linux - bash中的替换顺序
我需要演示命令替换、变量替换和通配符发生的顺序。关于如何做的任何想法?