run a shell script with echo

I need to schedule a shell script that runs at the command prompt to run with crontab. When I run this at the command prompt as follows it works:
echo /usr/test/script.sh date1 date2 y | at 20:00

But if I will pass these argument (date1, date2, Y) with in a shell script (say scr1.sh) and shedule this with crontab, it doesnot run.
Suppose crontab entry is as follows:
00 20 12 * * /usr/test/scr1.sh

If I will run this at the prompt , it works ($/usr/test/scr1.sh)
Can anbody explain the reason and the way I can fix this.
Thanks in advance.

Looking at the FAQs should be a good starting point.

Check script ownership - compare with crontab owner.

Also check what actually happens when called from cron by adding a log location:
eg:
00 20 12 * * /usr/test/scr1.sh > /tmp/script.out 2>&1

[Can also look at the cron log for evidence of what is actually happening.]

I checked the permissions and its ok. I also directed to a log file that shows the same output it show when it is running at the prompt.
I am calling a script as follows:

Script1 date1 date2 Y | at 20:00

I call the above line with in another script ( say Script2) and I schedule Script2 in cron. When I run the above line at the prompt, it works, But if I run in cron it shows in the log that its scheduled to run , but doesn't run.
Please help me.

Can you tell me specific place in FAQ where I can get this information related to my question.
Thanks in advance

When this problem presents itself in my world, I usually find one of the following.

The "environment" that I use and the "environment" that cron uses are different, different path setup, etc,.etc,...so make sure you have fully qualified paths to your commands, etc or at least source the correct environment to ensure your cron entry is using the same environment as you are when you are logged in.

Sometime comparing a "env >> env.out" in your cron script to your interactive login session "env" may also show you a troubling "difference",...

Hope this helps,....

here you go!

Also, the best answer can be given if you put the exact contents of the script in your post.

If the entire contents of your script is

echo /usr/test/script.sh date1 date2 y | at 20:00

then you should definitely add a line to the start of your script that defines your shell.

(ie.
#!/bin/ksh
echo /usr/test/script.sh date1 date2 y | at 20:00
or
#!/bin/sh
echo /usr/test/script.sh date1 date2 y | at 20:00)

Sometimes adding the shell to the crontab line works as well, but I am not sure if this is recommended.

(ie. 00 20 12 * * /bin/sh /usr/test/scr1.sh)