zsh 和并行:如何使用函数。它说找不到命令

San*_*idi 5 zsh gnu-parallel

我有一个脚本文件

文件名:test_sem_zsh.sh

main() {
    echo "Happy day"
}
export -f main 
sem --id testing --fg main
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用运行它zsh

$ zsh test_sem_zsh.sh 
test_sem_zsh.sh:export:4: invalid option(s)
zsh:1: command not found: main
Run Code Online (Sandbox Code Playgroud)

1) main command not found它说两个错误2) export:4: invalid option(s)

当我尝试使用它时bash它在哪里工作

$ sh test_sem_zsh.sh 
Happy day
Run Code Online (Sandbox Code Playgroud)

那么如何让这个脚本zsh也与

Mar*_*ell 0

不确定您要做什么,但这可能会帮助您定义一块可以在sem不需要 bash 的情况下运行的代码export

#!/bin/zsh

# Create script in /tmp
script="/tmp/tmp-$$"
cat <<EOF > "$script"
echo "Happy day"
date
EOF

sem --id testing --fg /bin/zsh "$script"

rm "$script"
Run Code Online (Sandbox Code Playgroud)

这个答案是概念性的......对于生产用途,您应该设置一个trap来删除脚本,可能会使用mktemp并提高安全性。