问题标签 [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 回答
3644 浏览

python - Python 子进程、子shell 和重定向

我想使用 python 子进程模块的子shell 和重定向的魔力,但它似乎不起作用,抱怨意外标记是括号。例如,命令

cat <(head tmp)

当传递给子进程时给出了这个

0 投票
1 回答
432 浏览

java - ruby 反引号,kernel.system,exec,命令不成功

我正在尝试从我的 ruby​​ 代码中执行一个 java 程序。

我的代码是这样的:

我的问题是命令没有以任何一种方式成功运行。我知道 %x, 反引号在子外壳中运行,因此可能缺少一些环境变量。但是我希望 Kernel.system、Kernel.exec 能够成功。

如果我直接在 shell 中键入命令,该命令运行良好。调试这个有什么帮助吗?

谢谢!

0 投票
3 回答
457 浏览

apache - 如何编写包装器 - 避免子shell - 用于 apache2 重写映射或 shell 脚本的脚本?

我在 apache2 中使用外部重写程序 (prg) 运行重写映射,这可能会产生错误并死掉。当重写映射不再运行时,系统显然无法正常运行。

所以我想启动一个简单的包装外壳脚本,它本身执行地图程序(用 php 编写)并在它死时重新启动它:

如果我在 shell 中手动尝试,它工作正常,但是当由网络服务器启动时它不起作用。

...然后通过其标准输入和标准输出文件句柄与重写引擎通信。对于每个映射函数查找,它将在标准输入上接收作为以换行符结尾的字符串来查找的键。然后它必须将查找到的值作为标准输出上的换行符终止的字符串或四字符字符串“NULL”返回,如果它失败......

原因对我来说似乎很清楚。第一个脚本采用标准输入,但不将其重定向到子脚本。

我想我需要以某种方式定义一个描述符,exec并正确地重定向脚本的标准输入/标准输出。但是我该怎么做呢?

0 投票
4 回答
5808 浏览

bash - 带有嵌入引号的bash中的字符串扩展

问题:

以下 shell 脚本代码不会产生预期的结果:

预期结果:

使用名称创建的新数据库zztest

实际结果:

使用名称创建的新数据库$TARG_DB

问题:

如何更改此示例代码以进行$TARG_DB插值或扩展,从而给出预期的结果?

0 投票
3 回答
9211 浏览

bash - 通过管道从 subshel​​l 获取退出代码

如何wget从 subshel​​l 进程中获取退出代码?

所以,主要问题是$?等于0。在哪里可以$?=8建立?

tee实际上,它可以在没有的情况下工作。

但是${PIPESTATUS}数组(我不确定它是否与该案例有关)也不包含该值。

所以,我的问题是 - 我怎样才能wget通过tee和 subshel​​l 获得退出代码?

如果有帮助,我的 bash 版本是4.2.20.

0 投票
4 回答
1750 浏览

linux - 为什么这个 bash 代码不起作用?

我希望第二行生成“a=b”,并在主 shell 的上下文中执行它,从而产生一个a带有 value的新变量b。但是,我真正得到的(如果我手动输入命令)是第二行之后的错误消息,bash: a=b: command not found

为什么呢?

0 投票
3 回答
220 浏览

sed - 进行目标替换

似乎 subshel​​l 没有检索到 "$@" 的结果,所以没有什么可做的替换。

0 投票
1 回答
1836 浏览

bash - 使用 Subshel​​l 的“cd”命令的别名未按预期工作

我刚刚了解了 bash 中的别名。我像这样创建了一个:

alias="cd $directory"

使用输入在哪里$directory。在另一个 shell 脚本中,我可以像这样启动一个子 shell:

( bash )

这将我带到子shell,如果我运行cd,我会转到别名,cd $directory. 这很棒,而且似乎按预期工作。

我正在寻找的是当 subshel​​l 启动时, cd 会自动发生,所以我尝试了:

( bash | cd )

认为它会启动 subshel​​l 和 cd 到用户输入$directory,但它不工作。我怎样才能让它发挥作用?我也试( bash -c cd)了也没用。

谢谢。

0 投票
6 回答
56577 浏览

bash - 有没有办法编写一个中止整个执行的 Bash 函数,无论它是如何调用的?

我在我的 Bash 函数中使用“exit 1”语句来终止整个脚本,它运行良好:

但后来我意识到它在调用时不起作用:

我知道我创建了一个子外壳,并且“退出 1”中止了该子外壳,而不是主外壳....

但是有没有办法编写一个中止整个执行的函数,不管它是如何被调用的?我只需要获取真正的返回值(由函数回显)。

0 投票
2 回答
1056 浏览

linux - 如何从 subshel​​l 获取标准输出?

我有这样的脚本?

主外壳没有打印任何信息。如何从 sub 命令获取输出?