Sac*_*iya 85 shell export function
请告诉我如何在父shell(bash,sh或ksh)中导出函数,以便该函数可用于从父进程启动的所有子进程?
Pau*_*ce. 102
该export -f功能特定于Bash:
亲
#!/bin/bash
plus1 () { echo $(($1 + 1)); }
echo $(plus1 8)
export -f plus1
./child 14 21
Run Code Online (Sandbox Code Playgroud)
儿童
#!/bin/bash
echo $(plus1 $(($1 * $2)) )
Run Code Online (Sandbox Code Playgroud)
函数本质上是不可导出的。不过你可以导出字符串,所以我这里有一个小技巧:
func="$(typeset -f funcname)"
export func
Run Code Online (Sandbox Code Playgroud)
要导入该函数,请从导出的字符串中重新定义它:
# in subshell
eval "$func"
Run Code Online (Sandbox Code Playgroud)