首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Whiptail没有运行我的bash命令

Whiptail没有运行我的bash命令
EN

Stack Overflow用户
提问于 2016-08-08 23:28:55
回答 1查看 450关注 0票数 0

我使用whiptail创建了一个bash程序,为用户提供了一个图形化的界面来设置他们的系统。由于某种原因,我的脚本并没有运行我的任何bash命令,相反,它似乎循环输出到我的log.txt文件,但是没有安装任何包。

代码语言:javascript
复制
STATUS=0
     touch log.txt
     while [ $STATUS -lt 100 ]; do
        # update apt repos
        apt-get update
        wait
        echo "apt-get update" >> log.txt
        let STATUS=STATUS+15
        echo $STATUS
        # update apt package
        apt-get upgrade
        wait
        echo "apt-get upgrade" >> log.txt
        let STATUS=STATUS+15
        echo $STATUS
        # install required packages
        apt-get -y git-all nmap hydra
        wait
        echo "apt-get -y git-all nmap hydra" >> log.txt
        let STATUS=STATUS+10
        echo $STATUS
        # install rbenv
        git clone https://github.com/rbenv/rbenv.git ~/.rbenv
        wait
        echo "cloning rbenv" >> log.txt
        echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
        echo 'exporting PATH' >> log.txt
        ~/.rbenv/bin/rbenv init
        wait
        echo 'initializing rbenv' >> log.txt
        git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
        wait
        echo "cloning ruby-build" >> log.txt
        rbenv install 2.1.4
        wait
        echo "installing ruby 2.1.4" >> log.txt
        let STATUS=STATUS+25
        echo $STATUS
      done | whiptail --gauge "Setting Up Neo (THIS WILL TAKE SOME TIME)..." 40 78 0

因此,为了确认while循环是否正在运行,我开始向log.txt回显内容。下面是输出:

代码语言:javascript
复制
apt-get update
apt-get upgrade
apt-get -y git-all nmap hydra
cloning rbenv
exporting PATH
initializing rbenv
cloning ruby-build
installing ruby 2.1.4

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-08 23:59:35

首先,由于您没有后台进程,因此wait什么也不做。

其次,由于whiptail正在读取标准输入,因此需要确保来自所有apt-get、git、rbenv等命令的标准输出被重定向到标准错误,或者更好地重定向到您的日志。

代码语言:javascript
复制
    # update apt repos
    echo "apt-get update" >> log.txt
    apt-get update >>log.txt 2>&1
    (( STATUS += 15 ))
    echo $STATUS

    # update apt package
    echo "apt-get upgrade" >> log.txt
    apt-get upgrade >> log.txt 2>&1
    (( STATUS += 15 ))
    echo $STATUS

诸若此类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38833162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档