如何在xargs中使用自定义函数
当我们想在xargs(或者flock等其他子程序中)使用函数时,会发现提示“没有那个文件或目录”,如下例所示:
exec 2>&1 function c() { wc -c $1 } ls *sed* |xargs -I{} bash -c "c {}" echo ret_code is $?
bash: c:未找到命令 bash: c:未找到命令 ret_code is 123
类似 环境变量
,要让函数在子进程中可见也需要将函数导出,方法是 export -f 函数
,例如下面这个例子
exec 2>&1 function c() { wc -c $1 } export -f c ls *sed* |xargs -I{} bash -c 'c {}' echo ret_code is $?
1835 不死的sed.org 805 sed中的alpha到底包含哪些字符.org ret_code is 0