Bash: Split stdout from multiple concurrent commands into columns

前端 未结 3 1375
一生所求
一生所求 2021-02-06 08:53

I am running multiple commands in a bash script using single ampersands like so:

commandA & commandB & commandC

They each have their ow

3条回答
  •  难免孤独
    2021-02-06 09:19

    Script print out three vertical rows and a timer each row containing the output from a single script. Comment on anything you dont understand and ill add answers to my answer as needed

    Hope this helps :)

    #!/bin/bash
    #Script by jidder
    
    count=0
    Elapsed=0
    control_c()
    {
        tput rmcup
        rm tail.tmp
        rm tail2.tmp
        rm tail3.tmp
        stty sane
    }
    
    
    Draw()
    {
           tput clear
           echo "SCRIPT 1                                                                                                                     Elapsed time =$Elapsed seconds"
            echo "------------------------------------------------------------------------------------------------------------------------------------------------------"
            tail -n10 tail.tmp
            tput cup 25 0
    
            echo "Script 2                                                                                                                                                   "
            echo "------------------------------------------------------------------------------------------------------------------------------------------------------"
            tail -n10 tail2.tmp
            tput cup 50 0
    
            echo "Script 3                                                                                                                                                   "
            echo "------------------------------------------------------------------------------------------------------------------------------------------------------"
            tail -n10 tail3.tmp
    }
    
    
    Timer()
    {
            if [[ $count -eq 10  ]]; then
                    Draw
                    ((Elapsed = Elapsed + 1))
                    count=0
            fi
    
    
    }
    main()
    {
        stty -icanon time 0 min 0
        tput smcup
        Draw
        count=0
        keypress=''
        MYSCRIPT1.sh > tail.tmp &
        MYSCRIPT2.sh > tail2.tmp &
        MYSCRIPT3.sh > tail3.tmp &
    
        while [ "$keypress" != "q" ]; do
                sleep 0.1
                read keypress
                (( count = count + 2 ))
                Timer
        done
    
        stty sane
        tput rmcup
        rm tail.tmp
        rm tail2.tmp
        rm tail3.tmp
        echo "Thanks for using this script."
        exit 0
    }
    
    main
    
    trap control_c SIGINT
    

提交回复
热议问题