微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在bash脚本中使用xargs调用函数

我试图使用xargs并行调用一个更复杂的函数
#!/bin/bash
echo_var(){
    echo $1
return 0
}
seq -f "n%04g" 1 100 |xargs -n 1 -P 10 -i echo_var {} 
exit 0

这将返回错误

xargs: echo_var: No such file or directory

任何关于如何使用xargs来完成这个任何想法,或任何其他解决方案将受到欢迎。
谢谢!

导出函数应该做(未测试):
export -f echo_var
seq -f "n%04g" 1 100 | xargs -n 1 -P 10 -I {} bash -c 'echo_var "$@"' _ {}

您可以使用内置printf而不是外部seq:

printf "n%04g\n" {1..100} | xargs -n 1 -P 10 -I {} bash -c 'echo_var "$@"' _ {}

此外,使用返回0和退出0,掩盖任何可能由其前面的命令产生的错误值。此外,如果没有错误,它是认的,因此有点多余。

原文地址:https://www.jb51.cc/bash/392104.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐