如何在xargs中使用定义的函数


16

这是我的代码

#!/bin/bash

showword() {
  echo $1
}

echo This is a sample message | xargs -d' ' -t -n1 -P2 showword

因此,我有一个函数showword,该函数会回显您作为参数传递给该函数的任何字符串。

然后,我xargs尝试调用该函数,一次将一个单词传递给该函数,然后并行运行该函数的2个副本。不起作用的是xargs无法识别该功能。如何实现我要执行的操作,如何使xargs与该函数一起使用showword


Answers:


25

尝试导出函数,然后在子shell中调用它:

showword() {
  echo $1
}

export -f showword
echo This is a sample message | xargs -d' ' -t -n1 -P2 bash -c 'showword "$@"' _

谢谢,但是您如何看待我上面的回答?
GMaster 2014年

@FazleA .:我打算对此发表评论,但是因为您在这里询问,所以我会在这里回答。由于您没有将任何参数传递给,因此该方法不起作用showword
cuonglm

2
还有一个问题,为什么尾随_是必需的?阻止xargs处理其他任何东西吗?
GMaster 2014年


当我导出-f时,我得到“导出:非法选项-f”
Sagar Chamling 18-11-22
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.