James H. H. Lampert:

Could it be that |cron| is running it an entirely different shell, that doesn't understand the |if| statement?

Despite what others have said, the answer to this question is no. Whilst you /are/ running two different shells, the problem is not the |if| statement. Both of those shells understand that |if| statement. The difference between the shells involves the fact that you have assumed a particular exit status for the |cd| command for non-existent directories. That's the exit status that the |cd| command results in, in one of your shells. But it is not the exit status that results in the other.

Ironically, you are using the |[| command /anyway/, and that command has a direct method, its |-d| operator, for testing for the non-existence of a directory. So you are going around the houses a bit in order to achieve what you could be achieving directly, and portably (without assumptions about exit statuses), with the |[| command itself.

Reply via email to