加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux Shell,在后台运行命令时显示内容

发布时间:2020-12-14 01:28:08 所属栏目:Linux 来源:网络整理
导读:我想制作一个简短的脚本,仅用于实验目的.例如,我运行一个命令,如 sudo apt-get install eclipse --yes 而不是在安装它时显示命令的详细信息,显示一个加载条,如 …… (点加载时会弹出点或其他东西) 我试过做类似的事情 apt=sudo apt-get install vlc --yessta
我想制作一个简短的脚本,仅用于实验目的.例如,我运行一个命令,如

sudo apt-get install eclipse --yes

而不是在安装它时显示命令的详细信息,显示一个加载条,如
……
(点加载时会弹出点或其他东西)

我试过做类似的事情

apt=sudo apt-get install vlc --yes

start()
{
    $apt
    while $apt;
    do
        echo -n "."
        sleep 0.5
    done
}
start

(我打算做的是运行$apt变量,然后让它继续运行到while循环,while循环将确定命令是否正在运行,所以当命令运行时,它将用点替换verbose)

解决方法

这是上面的一个小变化……

spinner()
{
    local pid=$!
    local delay=0.75
    local spinstr='...'
    echo "Loading "
    while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
        local temp=${spinstr#?}
        printf "%s  " "$spinstr"
        local spinstr=$temp${spinstr%"$temp"}
        sleep $delay
        printf "bbb"
    done
    printf "    bbbb"
}

用法:

(a_long_running_task) &
spinner

打印出来

Loading …

Loading ….

Loading …..

Loading ……

当然在同一条线上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读