쉘 스크립트 문제 [닫기]

쉘 스크립트 문제 [닫기]

파일이 존재하는지 테스트하는 쉘 스크립트를 작성하십시오. 그렇다면 삭제된 파일의 타임스탬프 형식 로그를 YYYYMMDD-HH:MM:SS 날짜 명령으로 표시하고 파일을 삭제한 후 at 명령을 사용하여 5분 후에 실행되도록 자체 일정을 조정합니다.

if (( test -f /tmp/norun ))
then
    echo " removing /tmp/norun" 'data +%Y%m%d-%T'>>s30928290.log
    #rm /tmp/norun
    #timesh='date --date="1 minute"
    at -f /home/s300928290/s300928290.at now + 5 miniutes
else
    echo "hello world"  'data +%Y%m%d-%T'>>s30928290.log
fi
#echo "none";

이 스크립트를 실행할 수 없습니다. 이유를 아는 사람 있나요?

답변1

스크립트를 다음과 같이 수정했습니다.

if [[ -f /tmp/norun ]]; then
    echo "Removing /tmp/norun $(date '+%Y%m%d-%T')" >>s30928290.log
    rm -- /tmp/norun
    timesh=$(date --date='1 minute') # This variable is not being used
    at -f /home/s300928290/s300928290.at now + 5 minutes
else
    echo "Hello, world $(date '+%Y%m%d-%T')" >>s30928290.log
fi

Kusalananda가 지적했듯이 (( ... ))파일 테스트에 유효하지 않은 bash 산술 표현식이므로 [[ ... ]].

data당신이 그것을 원한다고 믿을 때 당신은 그것을 갖게 됩니다 date. 이는 명령 대체( )에도 적용되어야 합니다 $( ... ).

또한 명령의 철자가 minutes잘못 되었습니다.at

관련 정보