摘要:我有一个bash脚本在后台运行进程,并且应该作为普通命令工作,并在命令替换块作为$(...)
。脚本本身产生了一个分叉到背景的过程。它可以降低到这个测试用例:
#!/bin/sh
echo something
sleep 5 &
在shell运行此脚本将立即返回(和打印“东西”),运行它里面$(...)
将挂起5秒钟,等待中背景的“休眠”完成。
适用于在启动该命令替换外壳内部,并产生在后台进程,包括在这个过程中树显然是任何东西的孩子。似乎同时影响bash和zsh,还没有尝试过别人。
原题:我有一个应该打印值到标准输出,并把它复制到X剪贴板进行每次运行bash脚本。
#!/bin/sh
echo something
echo something | xclip -selection clipboard
该脚本(我们称之为“东西”)是指被用来获得这个词(这实际上是另一个命令的输出),并以不同的方式,例如可以使用:
$ something
something
$ xclip -o -selection clipboard
something
$ echo $(something)
^C
打印到正常的标准输出,将输出复制到剪贴板以用于普通X应用程序,并且还应该能够使用带有bash命令替换的标准输出将该字插入任何命令的中间。
但是bash命令替换似乎迫使xclip
在前台活路。 xclip
通常会自我守护,因为X剪贴板要求客户端提供剪贴板内容,默认行为是在剪贴板内容被替换后退出。
具有XCLIP我做了我在这个问题一开始写的最小测试用例这个问题后,所以它似乎适用的是什么,该$(...)
壳内daemonizes
任何人都可以解释这种现象?有什么办法可以避免它吗?
呜!完美而极其简单的解决方案谢谢! – dequis
顺便说一句,重定向到一个文件而不是/ dev/null似乎工作捕获输出,但至少在这里,输出文件似乎只有在后台进程退出后才会更新。 (虽然我不需要它) – dequis