在执行command1时,如何使command2等待command1退出? command2?

时间:2019-04-17 15:55:54

标签: unix browser pipe i3

我正在尝试将dmenu的输出通过管道传输到浏览器(浏览器),以便浏览选定的URL。我在做:

cat ~/.surf/bookmarks | dmenu | surf

但是在dmenu使用我选择的URL退出之前开始冲浪。这意味着它无法使用正确的URL打开。我不明白问题出在哪里,因为dmenu在做出选择后将URL打印到标准输出,并且surf以URL作为参数进行工作。为了澄清起见,书签文件仅在单独的行中包含URL。

我在i3中使用它作为bindsym。我也尝试过

surf (cat ~/.surf/bookmarks | dmenu)
鱼壳语法,因为那是我的壳。 预先感谢。

1 个答案:

答案 0 :(得分:1)

如tkauusl的评论中所述,surf应该将URL作为命令行参数,而不是通过管道传递到stdin

对于bash和POSIX兼容的shell,可以使用以下语法:

surf $(cat ~/.surf/bookmarks | dmenu)

对于其他外壳,您可能必须使用

surf `cat ~/.surf/bookmarks | dmenu`

如果URL可以包含空格,则应引用命令替换的结果。

surf "$(cat ~/.surf/bookmarks | dmenu)"