어느 시점에 로그 파일에 쓰고 싶은 매우 간단한 ksh 스크립트가 있습니다. 나는 두 곳에서 다음 명령을 사용합니다 ...
print "Directory listing 1:\n" > ${LogFile}
ll >> ${LogFile}
(참고: 이 명령을 두 번째로 사용하면 디렉터리 목록 2가 인쇄됩니다.)
내 문제는 나중에 로그 파일을 볼 때 이 명령을 두 번째로 실행할 때만 작동한다는 것입니다! 따라서 "디렉토리 목록 1"과 그에 수반되는 "ll" 출력이 없습니다.
내 논리에 문제가 없는지 확인하기 위해 스크립트를 시도하고 테스트했습니다. 각 명령 앞에 인쇄 테스트 명령을 추가하여 해당 명령이 실행될 것임을 알 수 있었습니다.
내가 뭔가 잘못한 걸까, 아니면 깨닫지 못한 걸까?
답변1
>
(첫 번째 줄)을 사용하여 리디렉션할 때 ${LogFile}
마다 0으로 잘린 후 기록됩니다. 제가 이해한 것이 맞다면 위의 작업을 두 번 수행하면 첫 번째 내용이 두 번째 내용으로 덮어쓰여지게 됩니다.
당신이 해야 할 일은:
> ${LogFile} # This just truncates if there was anything there, writes nothing
...
echo "First round" >> ${LogFile}
ls -l >> ${LogFile}
...
echo -e "\nSecond round" >> ${LogFile}
ls -l >> ${LogFile}
...