当我们想在 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
