首页 > 解决方案 > bash函数没有退出

问题描述

我尝试了一些在类似帖子中看到的建议,但我的脚本在完成后没有退出。我必须按 Enter 才能退出。它运行一个名为 foo 的函数,并且运行良好。但是当它完成它的写入 Done $i 其中 i 是最后一项,然后是空格时,我必须按 Enter 退出。先感谢您。

#!/bin/bash

PATH=/opt/conda/bin:$PATH
export PATH


eval "$(conda shell.bash hook)"
conda activate prokka_env &&

foo () {
    local i=$1
    prokka $i --outdir ./"${i%.*}" --prefix "${i%.*}"
    echo Done $i
}

for i in *.fasta; do foo "$i" & done

标签: bashconda

解决方案


首先,我假设您打算使用&afterconda activate prokka_env而不是&&(尽管最好不要在后台运行该命令)。

其次,由于您foo在后台运行所有 s ,因此&您需要wait在脚本末尾添加,以便在所有后台任务完成运行后脚本将自动结束。

有关更多信息,请参阅GNU bash 手册wait中的条目或运行.help wait


推荐阅读