This works (prints, for example, “3 arguments”):
to run argv do shell script 'echo ' & (count argv) & ' arguments' end run
This doesn’t (prints only “Argument 3: three”, and not the previous two arguments):
to run argv do shell script 'echo ' & (count argv) & ' arguments' repeat with i from 1 to (count argv) do shell script 'echo 'Argument ' & i & ': ' & (item i of argv) & ''' end repeat end run
In both cases, I’m running the script using osascript on Mac OS X 10.5.5. Example invocation:
osascript 'Script that takes arguments.applescript' Test argument three
I’m not redirecting the output, so I know that the script is not throwing an error.
If I add a display dialog statement above the do shell script, it throws a “no user interaction allowed” error, so I know that it is executing the loop body.
What am I doing wrong? What is it about this loop that causes osascript to not print anything?
Try this to avoid having to use the temporary file.