On Thu, Jan 29, 2009 at 5:54 PM, whitewall wrote: > > The text below is from a text file. If I type the commands line-by-line in > the bash then the commands work as expected. If I save the commands in a > text file and call the script I get the error message: > ': not a valid identifier2: declare: 'Red > ': not a valid identifier3: declare: 'Green
If you run the script's stderr through od or similar, you will see that what bash is really saying is /path/to/your/file: line 2: declare: 'Red\r': not a valid identifier /path/to/your/file: line 3: declare: 'Green\r': not a valid identifier where the '\r's are carriage returns which cause the cursor to go back and overwrite the first part of the message. Run d2u on your script. > #! /cygdrive/c/cygwin/bin/bash > declare -i Red > declare -i Green > Red=10 > Green=$Red+1 Since you've declared both Green and Red as integer, you should just do Green=Red+1, without the dollar sign. Doing Green=$Red+1 first takes Red's value, which is stored as an integer, expands it back into its decimal string representation, and then reparses it to yield its integer value. I know that in a real script, any efficiency gains will be swamped by I/O, but there's no sense making the shell do extra work. :) -- Mark J. Reed <markjr...@gmail.com> -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/