2016-08-18 2 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 

을 시도하고 완벽하게 작동,하지만 난 내 스크립트에서 사용하는 경우는 아무것도하지 않습니다.

편집 : used 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가 있기 때문에,

관련 문제