小编zan*_*ona的帖子

等待 stdout 流完成,然后将其内容添加到文件中

我试图在 bash 中运行一个命令,其中我有一个command 1通过 stdin 接受大量内容然后将该内容输出到 a 的命令file.txt,但是,command 1生成内容流并且显然file.txt在command 1启动后立即创建,然后在command 1完成后更新具有正确的输出。

echo 'a lot of content' | command 1 > file.txt
Run Code Online (Sandbox Code Playgroud)

问题是我只想创建或触摸file.txt一次command 1完全完成。

有什么方法可以实现吗?

编辑:

用例:我使用的是每次文件更改时都会刷新的 Web 开发服务器,因此我在真正更新文件之前进行了一些预处理。

上面命令的问题是,如果文件被更新或创建空内容,服务器会立即刷新,有一个空页面,所以我真的想等待后期处理完成(假设大约需要 4 秒)和只有file.txt这样才能在页面上正确呈现它。

因此,我只需要在这里运行一个命令,即command 1在file.txt更新后,我的 Web 开发服务器将自动刷新。

shell bash io-redirection

9
推荐指数
2
解决办法
1806
查看次数

将 Subshel​​l 后台进程 pid 分配给变量

我目前正在子 shell 中启动后台进程,想知道如何将其 pid 编号分配给子 shell 范围之外的变量?
我尝试了许多不同的方法,但MYPID始终设置为0.

MYPID = 0;
({ sleep 2 & }; $MYPID=$!)
({ sleep 2 & }; echo $!) > $MYPID
Run Code Online (Sandbox Code Playgroud)

它返回值的唯一方法是:

$MYPID=$({ sleep 2 & }; echo $!)
Run Code Online (Sandbox Code Playgroud)

然而,这会丢弃后台进程指令,它只会在 2 秒后返回结果。

shell bash subshell variable

5
推荐指数
1
解决办法
3775
查看次数

标签 统计

bash ×2

shell ×2

io-redirection ×1

subshell ×1

variable ×1