如何将此 bash 函数转换为鱼壳?

jas*_*son 4 bash shell function fish

function run () {
    nohup python $1 > nohup.out &
}
Run Code Online (Sandbox Code Playgroud)

在命令行上,我将其称为“run scriptname.py”,bash 执行以下命令:

python scriptname.py > nohup.out & 
Run Code Online (Sandbox Code Playgroud)

你能帮我把这个翻译成鱼吗?

到目前为止我有这个..

function run 
    bash -c "nohup python $1 > nohup.out &"
end
Run Code Online (Sandbox Code Playgroud)

当我在 ~/.config/fish/config.fish 上调用 source 时

这存在只是说

Error when reading file: ~/.config/fish/config.fish 
Run Code Online (Sandbox Code Playgroud)

没有提供任何关于错误是什么的有用提示。

fah*_*aho 5

真的没有必要在bash这里执行,fish 也可以执行nohup,重定向也可以工作等等。

有一个细微的区别,而不是 $1 和 $2 等,fish 函数的参数存储在 $argv 数组中。

function run
     nohup python $argv > nohup.out &
end
Run Code Online (Sandbox Code Playgroud)

这会将 $argv 扩展到所有元素,每个元素作为一个元素,因此run script.py banana将运行nohup python script.py banana > nohup.out &. 如果您真的只想传递一个参数,则需要$argv[1].

我实际上不知道为什么您的定义在采购 config.fish 时会导致错误 - 您使用的是哪个鱼版本?