bash - 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
解决方案
首先,我假设您打算使用&
afterconda activate prokka_env
而不是&&
(尽管最好不要在后台运行该命令)。
其次,由于您foo
在后台运行所有 s ,因此&
您需要wait
在脚本末尾添加,以便在所有后台任务完成运行后脚本将自动结束。
有关更多信息,请参阅GNU bash 手册wait
中的条目或运行.help wait
推荐阅读
- r - 在 R 的 rnorm() 函数中调用的 norm_rand() 的源代码是什么?
- c# - 用户在使用数字签名的应用程序中取消了操作
- cross-browser - 我们能否自动化屏幕阅读器测试以实现 Web 可访问性
- azure - 如何在 Azure 中启用 http2?
- vue.js - vuejs $emit 在确认对话框中无效
- networking - OpenStack VM 网络中断
- chisel - 使用 Cat 运算符维护 FIRRTL 上的连接顺序
- .net - .NET Native 是否将所有泛型编译为本机代码?
- sql-server - 由于约束,批量数据加载未加载所有记录,但我不知道为什么
- firebird - Firebird 2.5 'DEFINE GENERATOR failed' 似乎是由于达到数据库生成器限制,但实际数量远未达到该限制