如何将 xargs 与 fish shell 中的函数一起使用?
How to use xargs with a function in fish shell?
我需要使用 xargs 在 fish 中并行调用一个函数 shell。我试过这个:
#!/bin/fish
function func
echo $argv
end
echo 'example1' 'example2' | xargs -n1 func
但是我得到了这个:
xargs: func: No such file or directory
那么,我怎样才能让它发挥作用?
使用 bash 这有效:
#!/bin/bash
function func {
echo
}
export -f func
echo 'example1' 'example2' | xargs -n1 bash -c 'func $@' _
xargs
命令需要外部命令。你不能给它一个功能。您尝试执行的操作不适用于 bash、zsh、ksh 或任何类似的 shell。执行此操作的方法是将函数放在名为 func 的文件中,该文件位于 PATH
:
中
#!/bin/fish
function func
echo $argv
end
func $argv
现在它是作为外部命令(shell 脚本)实现的,您可以将它与 xargs 一起使用:echo 'example' | xargs func
.
正如 Kurtis 所说,xargs 不适用于函数。它可以通过启动另一个 shell 来工作,但那是一个 hack。
根本不使用 xargs 可能对您更有效。
而不是
echo 'example' | xargs func
只是 运行 func example
.
一般情况下,应该使用 fish 的命令替换。
所以不用
somecommand | xargs func
使用
func (somecommand)
这将在换行符上拆分 somecommand
s 输出,严格来说 比 xargs
更 严格(它将在 "blanks" 上拆分和换行符,但它允许 shell-like 引用和转义),这通常是你想要的。
我需要使用 xargs 在 fish 中并行调用一个函数 shell。我试过这个:
#!/bin/fish
function func
echo $argv
end
echo 'example1' 'example2' | xargs -n1 func
但是我得到了这个:
xargs: func: No such file or directory
那么,我怎样才能让它发挥作用?
使用 bash 这有效:
#!/bin/bash
function func {
echo
}
export -f func
echo 'example1' 'example2' | xargs -n1 bash -c 'func $@' _
xargs
命令需要外部命令。你不能给它一个功能。您尝试执行的操作不适用于 bash、zsh、ksh 或任何类似的 shell。执行此操作的方法是将函数放在名为 func 的文件中,该文件位于 PATH
:
#!/bin/fish
function func
echo $argv
end
func $argv
现在它是作为外部命令(shell 脚本)实现的,您可以将它与 xargs 一起使用:echo 'example' | xargs func
.
正如 Kurtis 所说,xargs 不适用于函数。它可以通过启动另一个 shell 来工作,但那是一个 hack。
根本不使用 xargs 可能对您更有效。
而不是
echo 'example' | xargs func
只是 运行 func example
.
一般情况下,应该使用 fish 的命令替换。
所以不用
somecommand | xargs func
使用
func (somecommand)
这将在换行符上拆分 somecommand
s 输出,严格来说 比 xargs
更 严格(它将在 "blanks" 上拆分和换行符,但它允许 shell-like 引用和转义),这通常是你想要的。