2016-08-18 30 views
0

ちょっとしたシェルスクリプトを書いて、クラッシュするたびにdosboxを再起動します。シェルスクリプトがファイルに書き込まない

#!/bin/bash 
while [ "1" == "1" ] 
do 
    test=$(pgrep dosbox) 
    if [ "$test" == '' ] 
    then 
     date + "%d-%m-%y  %T" >> autostartLog.txt 
     dosbox emulator 
    fi 
done 

これは問題なく再起動しますが、autostartLogs.txtに書き込めません。

私は、端末内

echo $(date + "%d-%m-%y  %T) >> autostartLog.txt 

を試してみましたが、それは完全に働いたが、私は私のスクリプトでそれを使用する場合、それは何もしません。

編集:中古checkerですが、それでも書きません。

+0

は最初http://www.shellcheck.net/であなたのコードを貼り付けて考えてみて動作するべきではありませんいくつかの構文エラーがあります(ヒント: 'test = $(...)'は間違っています、[know why](http://stackoverflow.com/a/2268117/1983854))。 – fedorqui

+1

文字列 '%d-%m-%y%T'を閉じることはありません – Jens

+2

スクリプトを' bash -x script-name'として実行します。 '+' – cdarke

答えて

3

あなたのテストは疑わしいです。より良い方法は、次のようになります。

#!/bin/bash 

while :  # Tidier infinite loop 
do 
    if ! pgrep dosbox   # Note we are testing the failure of the pgrep 
    then 
     date "+%d-%m-%y  %T" >> autostartLog.txt 
     dosbox emulator 
    fi 
done 
1

date+"の間にスペースが

date +"%d-%m-%y %T" >> autostartLog.txtはそれ以来、

関連する問題