> ~/blabla.txt 执行这些命令后,程序 x 应该在前台-6ren">
gpt4 book ai didi

shell - 从 shellscript 启动后台进程,然后再回到前台

转载 作者:行者123 更新时间:2023-12-04 15:34:20 30 4
gpt4 key购买 nike

我正在尝试制作一个执行以下操作的 shell 脚本:

  • 启动程序 x
  • 在 x 运行时执行一些命令,例如:
    echo "blabla" >> ~/blabla.txt
  • 执行这些命令后,程序 x 应该在前台运行,以便它可以接受用户输入。

  • 到目前为止,我有:
    ~/x &
    echo "blabla" >> ~/blabla.txt

    但是,我不知道如何将 x 移回前台。这都是从 shell 脚本调用的,所以我不知道 x 的作业号移动到前台。

    注意:一切都必须自动化,不需要用户与 shell 脚本交互。

    欢迎任何建议:)

    最佳答案

    虽然完全不明白为什么有人可能需要这样的脚本,但我确信比存在更优雅和更好/更正确的解决方案 - 但好吧 - 下一个演示如何:

    脚本什么去后台(命名为 bgg )

    #!/bin/bash
    for i in $(seq 10)
    do
    echo "bg: $i"
    sleep 1
    done
    read -p 'BGG enter something:' -r data
    echo "$0 got: $data"

    主脚本 ( main.sh )
    set -m   #this is important

    echo "Sending script bgg to background - will cycle 10 secs"
    ./bgg & 2>/dev/null

    echo "Some commands"
    date
    read -r -p 'main.sh - enter something:' fgdata
    echo "Main.sh got: ==$fgdata=="

    jnum=$(jobs -l | grep " $! " | sed 's/\[\(.*\)\].*/\1/')
    echo "Backgroung job number: $jnum"

    echo "Now sleeping 3 sec"
    sleep 3
    echo "Bringing $jnum to foreground - wait until the BG job will read"
    fg $jnum

    运行 ./main.sh - 结果将类似于
    Sending bgg to background - will cycle 10 secs
    Some commands
    Mon Mar 3 00:04:57 CET 2014
    main.sh - enter something:bg: 1
    bg: 2
    bg: 3
    bg: 4
    bg: 5
    qqbg: 6
    qqqqq
    Main.sh got: ==qqqqqqq==
    Backgroung job number: 1
    Now sleeping 3 sec
    bg: 7
    bg: 8
    bg: 9
    Bringing 1 to foreground - wait until the BG job will read
    ./bgg
    bg: 10
    BGG enter something:wwwwwww
    ./bgg got: wwwwwww

    关于shell - 从 shellscript 启动后台进程,然后再回到前台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22134331/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com