2016-08-08 8 views
0

ユーザにシステムを設定するためのグラフィカルタイプのインターフェイスを与えるために、whiptailを使ってbashプログラムを作成しました。何らかの理由で私のスクリプトは私のbashコマンドを実行していませんが、代わりに私のlog.txtファイルに出力することによってサイクリングしているようですが、パッケージはインストールされていません。だから、 Whiptailは私のbashコマンドを実行していません

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 

は、私が log.txtに物事をエコー始め、私のwhileループが実際に実行されていることを確認します。出力は次のとおりです。

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 

何が間違っていますか?

答えて

0

まず、バックグラウンドプロセスがないため、waitは何もしていません。

第2に、whiptailがstdinを読み込んでいるので、すべてのapt-get、git、rbenvなどのコマンドのstdoutがstderr以上にリダイレクトされるようにする必要があります。

# 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

stderr stdoutリダイレクトが私を殺しています! – Godzilla74

関連する問題