首页 > 解决方案 > 在 Fish 的同一行中使用 eval 和后台进程

问题描述

如何使用 eval 在变量中执行命令并在同一行中将其作为背景?我正在尝试以下方法,但它不起作用。例如s xeyes,我希望 shell 返回。

function s --description "Start a command in the background and remove from jobs list"
    echo (count $argv)
    if test (count $argv) -ne 1 
        echo "illegal number of parameters"
        return 1
    end
    eval $argv[1] 2>&1 > /dev/null &
    disown
end

标签: fish

解决方案


Fish 不支持后台功能。eval是一个函数,因此不支持将其作为后台处理。

你需要把&eval'd 代码,所以

    eval $argv[1] 2>&1 > /dev/null &

可能会奏效。

eval或者,由于这里不再需要fish 3.0 ,所以你可以这样做

 $argv[1] 2>&1 >/dev/null &

推荐阅读