2009-10-12 3 views
3

하나의 인수 인 파일을 취한 후 60 초 후에 어떤 일이 일어 났는지 확인하는 프로그램을 만들려고합니다. 이렇게하려면 변수에 -e $1의 결과를 저장 한 다음 60 초 후에 확인해야합니다. 나는 내 말을 듣고 if 표현을 만들 수없는 것 같아 잘못되었다는 것을 알고있다. 테스트 용으로이 스크립트는 비교 결과를 즉시 출력합니다. 이 작업 샘플을 기대하면서이 작은 프로그램으로 얼마나 많은 버전을 만들 었는지 알 수 없습니다. 감사! 내일 기한인데, 어떤 도움이라도 대단히 감사합니다!Bash는 저장된 "부울"값과 무엇을 비교합니까?

#!/bin/bash 
onStartup=$(test -e $1) 
if [ -e "$1" ]; then 
    unixtid1=$(date +"%s" -r "$1") #To check if the file was edited. 
    echo $unixtid1 
fi 
sleep 3 

#Here trying to be able to compare the boolean value stored in the 
#start of the script. True/False or 1 or 0? Now, both is actually printed. 
if [[ $onStartup=1 ]]; then 
    echo "Exists" 
fi 

if [[ $onStartup=0 ]]; then 
    echo "Does not exists" 
fi 

답변

5

$? 특수 쉘 변수를 사용하면 명령 결과를 얻을 수 있습니다. 0의 반환 값은 true을 의미합니다. 여기에 원래 예제는 onStartup 변수에 test 명령의 문자 출력을 저장하기 위해 노력

#!/bin/bash 
test -e $1 
onStartup=$? 

if [ $onStartup -eq 0 ]; then 
unixtid1=$(date +"%s" -r "$1") #To check if the file was edited. 
echo $unixtid1 
fi 
sleep 3 

#Here trying to be able to compare the boolean value stored in the 
#start of the script. True/False or 1 or 0? 
if [[ $onStartup -eq 0 ]]; then 
echo "Exists" 
else 
echo "Does not exists" 
fi 

스크립트 수정됩니다. test 명령의 리터럴 출력은 빈 문자열이므로 출력이 표시되지 않습니다.