shell 脚本内执行parallel my_function ::: "$@"命令,其中my_function也是当前脚本内定义的一个函数,但是执行该脚本时,提示/usr/bin/bash: my_function:未找到命令。但单独执行 my_function Abc 是可以实现函数功能的。parallel命令不支持调用函数吗?支持的话应该怎么书写呢?
【以下回答由 GPT 生成】
问题标题: 如何在shell脚本中使用parallel命令调用函数? 问题标签: centos 问题内容: 我想在shell脚本中使用parallel命令调用一个在同一脚本中定义的函数my_function
。但是当我执行这个脚本时,我会得到一个错误提示/usr/bin/bash: my_function:未找到命令
。然而,如果我单独执行my_function Abc
,函数的功能是正常的。我想知道是不是parallel命令不支持调用函数呢?如果支持的话,应该如何在shell脚本中正确书写?
请提供清晰的解决方案。
Parallel命令默认不能直接调用在同一脚本中定义的函数。我们需要使用--env
选项将函数导出到并行进程中,以便能够调用。
下面是一个解决该问题的具体步骤:
sudo yum install parallel
#!/bin/bash
# 定义需要调用的函数
my_function() {
local arg=$1
# 在这里定义函数的功能
echo "参数为: $arg"
}
# 导出函数到并行进程
export -f my_function
# 使用parallel命令调用函数
parallel my_function ::: "Abc" "Def" "Ghi"
在上面的脚本中,my_function
被定义为一个普通的shell函数,并使用export -f
命令将它导出到并行进程中。
$ ./script.sh
参数为: Abc
参数为: Def
参数为: Ghi
通过以上步骤,你可以在shell脚本中使用parallel命令调用在同一脚本中定义的函数,并且函数的功能会被正常执行。