问题标签 [subshell]

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 投票
1 回答
2411 浏览

bash - 在子shell中运行命令

我想自动化一项我经常做的重复任务。那就是为不同的架构创建 rpm。要编译代码并创建 rpm,我需要设置项目环境。设置 env 后,我将为当前架构创建 rpm,我应该再次通过设置 env 为其他架构构建 rpm。

我正在尝试自动化这个过程。问题是一旦设置了环境,我将成为新的 shell,所以我的脚本在子 shell 中不可见。如何自动化这个?

这是我尝试过的。

将 env 设置为 x86 后,没有执行下一个命令。

0 投票
1 回答
187 浏览

shell - 子外壳内变量内的引号

所以这是我遇到的一个奇怪的问题;我有一个脚本,它试图构建一组通过 运行的命令eval,这些命令需要在子 shell 中作为一系列其他命令的一部分运行(这样我就可以异步运行它们)。这些命令包括引号以保护带有空格等的值,但是它们被视为根本不存在引号。

例如:

结果“Foo:找不到命令”的错误

虽然更直接地运行它可以正常工作,如下所示:

我意识到这个例子不是很有趣,但我不明白为什么引号会丢失以及如何避免它,同时仍然在适当的子 shell 中执行(在后台处理和不处理)。

0 投票
1 回答
917 浏览

bash - Bash:在子shell中使用花括号进行命令分组

当我尝试这样的事情时:

我越来越:

我确定我需要使用 subshel​​l。而且我确定我需要在其中进行分组。那么如何避免语法错误呢?先感谢您!

0 投票
2 回答
158 浏览

bash - set -e 后跟条件控制运算符时在子shell中被忽略

我找不到任何表明这是正确行为的文档。我已经在 bash 4.2.25 和 4.1.2 上验证了这种行为。这些是我可以轻松访问的最新版本。如果有人能解释为什么条件会改变前一个子shell的行为,我们将不胜感激。

谢谢,布赖恩

0 投票
5 回答
101 浏览

bash - bash:如何显示包含某个文件的第一个目录的名称

我有这个:

但我只需要第一个目录名,如下所示:dir1

我这样做了:

它有效,但现在我在subshell扩展时遇到了问题ssh。有没有更优雅的方式(没有subshellsor sed)来做到这一点?

如果没有,我将发布一个关于完全不同问题的问题 -subshells扩展ssh.

0 投票
1 回答
273 浏览

bash - 连续运行分叉进程,间隔后终止

我在编写 bash 脚本时遇到了困难,希望有人能提供帮助。基本上我试图同时运行多个进程,然后在一段时间后将它们全部杀死。

例如,如果我想跑my_long_running_task50 次并在 10 分钟后杀死,这就是我想出的:

我不是 bash 专家,但这似乎应该可行 - 将所有进程分叉,将它们的 pid 添加到数组中。然后最后只睡一段时间,然后遍历数组并杀死所有的pid。确实这适用于我非常简单的 poc:

但是当我做一些比echo运行 phantomjs 更有趣的事情时,进程不会在间隔后被杀死。

有什么想法吗?我错过了什么?

0 投票
1 回答
249 浏览

python - 监督 Python 子外壳

bash我想在or中将 Python 解释器作为劣质进程运行zsh。在此期间,我想向进程发送命令并查看STDOUT. 像这样的东西:

可悲的是,这不起作用。我正在运行 GNU/Linux。

0 投票
2 回答
513 浏览

git - git 分支 vs $(git 分支)

当我git branch在命令行上执行时,我得到一个 repo 上所有分支的列表,但是当我$(git branch)在子 shell 中执行时,它首先打印出 repo 中顶级文件夹中的文件列表,然后再打印出分支名字。为什么?

我基本上是在尝试使用 for 循环遍历分支,但是文件列表破坏了我的脚本。

0 投票
1 回答
151 浏览

bash - How to avoid such code duplications in a Bash script?

In one of my Bash scripts I have such code repeated twice:

There are two such find commands both performed on different directories, but with exactly the same parameters. Results of each finds are processed in a different ways. I am convinced that it is possible to avoid code duplication here. Is there a way to wrap this find command into a function that stores find results in some data structure? Such data structure must be passed to the subshell that iterates over its items. How can I achieve this?

0 投票
1 回答
1924 浏览

bash - 如果我将脚本作为后台进程获取会发生什么?

从 BASH 页面:

当脚本使用 source运行时,它在现有的 shell中运行,脚本创建或修改的任何变量在脚本完成后仍然可用。相反,如果脚本只是作为文件名运行,那么将生成一个单独的子shell(具有一组完全独立的变量)来运行脚本。

但是如果我跑步会发生什么

在这种情况下它是否作为子外壳运行?. myscript &和有什么区别./myscript &