Bash脚本编程

Bash脚本编程,bash,Bash,我想在一个while循环中继续打印(这种情况每秒钟发生一次,即睡眠一秒钟),并在一个单独的while循环中继续请求用户输入,但是如果一个不确定循环运行,它不会转到另一个循环,如果我们在后台运行一个,在前台运行一个,仍然没有帮助,我正在用bash脚本编程 #!/bin/bash memusageStatus=false diskspace=false processStatus=false menuStatus=true function printMenu { while [ true ]

我想在一个while循环中继续打印(这种情况每秒钟发生一次,即睡眠一秒钟),并在一个单独的while循环中继续请求用户输入,但是如果一个不确定循环运行,它不会转到另一个循环,如果我们在后台运行一个,在前台运行一个,仍然没有帮助,我正在用bash脚本编程

#!/bin/bash

memusageStatus=false
diskspace=false
processStatus=false
menuStatus=true

function printMenu {
while [ true ]
    do

    if  $menuStatus ; then
    printf "\na) Show/Hide Memory Usage Information \nb) Show/Hide Disk Space Information \nc) Show/Hide Process Information\no) Show/Hide List of options \nq) Exit\n"
    fi

    sleep 1
    tput cup 0 0 ;
    tput ed
    done

}
function disMenu {

while [ true ]
do      
    read ab
    echo ab
    case $ab in
        'a') if $memusageStatus ; then
            # free -k 
             memusageStatus=false;
            else
              memusageStatus=true;
            fi
            ;;

        'b')     if $diskspace ; then 
                diskspace=false
             else
                diskspace=true;
             fi
            # df -h 
              ;;
        'c')     if $processStatus ; then 
                processStatus=false
             else
                processStatus=true;
             fi 
            ;; #ps u 
        'o')        echo "you pressed o"
             if $menuStatus ; then
                menuStatus=false;
            else
                menuStatus=true;    
             fi   ;;
        'q') exit 0;;
    esac
done
}
printMenu & 
disMenu
exit 0

您可以尝试在一个循环中使用read-t1而不是sleep 1。
但可能需要更长的阅读时间。
类似于:

while [ true ]
do
    echo "Show your Menu"
    read -t 5 ab
    case $ab in
        'q') exit;;
    esac
done

还可以用示例代码更新问题吗?欢迎使用堆栈溢出。不幸的是,这不是一个“给我一个程序”的网站。对于帮助你的人来说,他们希望你已经做了并展示了一些研究工作和一个具体的、狭隘的问题。没问题,我将把代码上传到你的网站上。如果你能对你的问题做一个简单的描述,那会很有帮助,与其粘贴整个程序,并询问为什么它在
printMenu
中不工作,不如说你没有在任何地方中断循环,你希望它在哪里中断?你是否期望后台工作和当前工作以某种方式神奇地同步?为什么你需要两个循环呢?很难看出你在努力实现什么。