小编ff5*_*524的帖子

从背景功能打印输出后如何返回bash提示?

从打印在后台的函数打印输出后,如何自动返回到bash提示符?

例如,当我在bash shell中运行以下脚本时:

fn(){
        sleep 10
        echo "Done"
        exit
}
fn &

运行脚本后,它会立即返回我的提示.10秒后,它会打印"完成",然后在新行上显示一个闪烁的光标:

$ Done
?

脚本不再运行了,但是在我按下之前我没有收到提示Return.

打印"完成"后有没有办法强制返回bash提示符?

一个相关的问题是:是否有办法让后台任务通知终端打印新提示?但是,这个问题询问了一个背景计划.提供有答案适用于程序发送到后台,但似乎并没有为工作函数发送到后台(在我提供的例子).

澄清:我希望保存上面的整个代码片段(例如,as myscript.sh),然后将其作为前台脚本运行(例如,as bash myscript.sh).

编辑:以上当然只是一个MWE.这个问题的背景是:

  1. 用户运行脚本
  2. 脚本提交PBS作业,开始在后台拖尾输出文件,然后调用 fn &
  3. 用户得到提示,可能会开始做其他事情.
  4. 作业开始运行时,作业输出显示在用户终端上
  5. fn监视队列并tail在作业完成时终止.
  6. 用户抱怨在完成后没有得到快速回复(即必须按下Enter).

这里有一些不那么简单的代码:

watch_queue(){
    until [  `qstat | grep $job | wc -l` -lt 1 ]; do
        sleep 2
    done
    kill -9 $pid
    tput setaf 7
    tput setab 0
    echo "Hit ENTER to return …

bash shell background-process pbs torque

10
推荐指数
2
解决办法
6104
查看次数

标签 统计

background-process ×1

bash ×1

pbs ×1

shell ×1

torque ×1